在现代的 Web 开发中,前后端分离的架构越来越流行,前后端之间的数据交互通常采用 JSON(JavaScript Object Notation)格式。Spring 框架为我们提供了便捷的方式来返回 JSON 格式的数据,本文将详细介绍如何在 Spring 中返回 JSON 数据。
JSON 是一种轻量级的数据交换格式,它基于 JavaScript 的一个子集,易于人阅读和编写,同时也易于机器解析和生成。JSON 数据由键值对组成,使用大括号 {}
表示对象,方括号 []
表示数组。例如:
{
"name": "John",
"age": 30,
"hobbies": ["reading", "swimming"]
}
Spring 框架通过消息转换器(Message Converter)来实现对象和 JSON 数据之间的转换。默认情况下,Spring 会自动配置 MappingJackson2HttpMessageConverter
,它使用 Jackson 库来处理 JSON 数据的序列化和反序列化。
首先,我们使用 Spring Initializr 创建一个简单的 Spring Boot 项目,添加 Spring Web
依赖。
创建一个简单的实体类 User
,用于表示用户信息。
package com.example.demo.entity;
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建一个控制器类 UserController
,用于处理用户请求并返回 JSON 数据。
package com.example.demo.controller;
import com.example.demo.entity.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user")
public User getUser() {
return new User("John", 30);
}
}
在上述代码中,我们使用 @RestController
注解来标识该类为控制器,并且该控制器的所有方法返回的都是 JSON 数据。@GetMapping("/user")
注解表示处理 /user
路径的 GET 请求,getUser
方法返回一个 User
对象,Spring 会自动将该对象转换为 JSON 数据返回给客户端。
启动 Spring Boot 项目,访问 http://localhost:8080/user
,你将看到如下 JSON 数据:
{
"name": "John",
"age": 30
}
除了返回单个对象,我们还可以返回集合类型的 JSON 数据。修改 UserController
类如下:
package com.example.demo.controller;
import com.example.demo.entity.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class UserController {
@GetMapping("/users")
public List<User> getUsers() {
List<User> users = new ArrayList<>();
users.add(new User("John", 30));
users.add(new User("Jane", 25));
return users;
}
}
访问 http://localhost:8080/users
,你将看到如下 JSON 数据:
[
{
"name": "John",
"age": 30
},
{
"name": "Jane",
"age": 25
}
]
关键点 | 描述 |
---|---|
JSON | 轻量级的数据交换格式,基于 JavaScript 子集 |
消息转换器 | Spring 通过 MappingJackson2HttpMessageConverter 实现对象和 JSON 数据的转换 |
@RestController |
用于标识控制器,其方法返回 JSON 数据 |
返回集合 | 可以返回集合类型的 JSON 数据,Spring 会自动处理 |
通过以上步骤,我们可以在 Spring 中轻松地返回 JSON 格式的数据,实现前后端的数据交互。希望本文对你有所帮助!