微信登录

视图技术 - JSON 数据返回 - 返回 JSON 格式数据

Java - Web - Spring 《视图技术 - JSON 数据返回 - 返回 JSON 格式数据》

在现代的 Web 开发中,前后端分离的架构越来越流行,前后端之间的数据交互通常采用 JSON(JavaScript Object Notation)格式。Spring 框架为我们提供了便捷的方式来返回 JSON 格式的数据,本文将详细介绍如何在 Spring 中返回 JSON 数据。

一、JSON 简介

JSON 是一种轻量级的数据交换格式,它基于 JavaScript 的一个子集,易于人阅读和编写,同时也易于机器解析和生成。JSON 数据由键值对组成,使用大括号 {} 表示对象,方括号 [] 表示数组。例如:

  1. {
  2. "name": "John",
  3. "age": 30,
  4. "hobbies": ["reading", "swimming"]
  5. }

二、Spring 中返回 JSON 数据的原理

Spring 框架通过消息转换器(Message Converter)来实现对象和 JSON 数据之间的转换。默认情况下,Spring 会自动配置 MappingJackson2HttpMessageConverter,它使用 Jackson 库来处理 JSON 数据的序列化和反序列化。

三、演示代码

1. 创建 Spring Boot 项目

首先,我们使用 Spring Initializr 创建一个简单的 Spring Boot 项目,添加 Spring Web 依赖。

2. 定义实体类

创建一个简单的实体类 User,用于表示用户信息。

  1. package com.example.demo.entity;
  2. public class User {
  3. private String name;
  4. private int age;
  5. public User(String name, int age) {
  6. this.name = name;
  7. this.age = age;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15. public int getAge() {
  16. return age;
  17. }
  18. public void setAge(int age) {
  19. this.age = age;
  20. }
  21. }

3. 创建控制器类

创建一个控制器类 UserController,用于处理用户请求并返回 JSON 数据。

  1. package com.example.demo.controller;
  2. import com.example.demo.entity.User;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. @RestController
  6. public class UserController {
  7. @GetMapping("/user")
  8. public User getUser() {
  9. return new User("John", 30);
  10. }
  11. }

在上述代码中,我们使用 @RestController 注解来标识该类为控制器,并且该控制器的所有方法返回的都是 JSON 数据。@GetMapping("/user") 注解表示处理 /user 路径的 GET 请求,getUser 方法返回一个 User 对象,Spring 会自动将该对象转换为 JSON 数据返回给客户端。

4. 运行项目并测试

启动 Spring Boot 项目,访问 http://localhost:8080/user,你将看到如下 JSON 数据:

  1. {
  2. "name": "John",
  3. "age": 30
  4. }

四、返回集合类型的 JSON 数据

除了返回单个对象,我们还可以返回集合类型的 JSON 数据。修改 UserController 类如下:

  1. package com.example.demo.controller;
  2. import com.example.demo.entity.User;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. @RestController
  8. public class UserController {
  9. @GetMapping("/users")
  10. public List<User> getUsers() {
  11. List<User> users = new ArrayList<>();
  12. users.add(new User("John", 30));
  13. users.add(new User("Jane", 25));
  14. return users;
  15. }
  16. }

访问 http://localhost:8080/users,你将看到如下 JSON 数据:

  1. [
  2. {
  3. "name": "John",
  4. "age": 30
  5. },
  6. {
  7. "name": "Jane",
  8. "age": 25
  9. }
  10. ]

五、总结

关键点 描述
JSON 轻量级的数据交换格式,基于 JavaScript 子集
消息转换器 Spring 通过 MappingJackson2HttpMessageConverter 实现对象和 JSON 数据的转换
@RestController 用于标识控制器,其方法返回 JSON 数据
返回集合 可以返回集合类型的 JSON 数据,Spring 会自动处理

通过以上步骤,我们可以在 Spring 中轻松地返回 JSON 格式的数据,实现前后端的数据交互。希望本文对你有所帮助!