response中写入json

 

response.setContentType("text/html");

 

 

 

`ResponseEntity` 是 Spring 框架中用于封装 HTTP 响应信息的一个类,它可以控制响应的状态码、响应头以及响应体。当你希望从 Spring Boot 的控制器(Controller)返回 JSON 数据时,通常会使用 `ResponseEntity` 来包装你的数据。 ### 如何使用 `ResponseEntity` 返回 JSON 数据? 在 Spring Boot 中,只要你的对象是 POJO(Plain Old Java Object),并且项目中引入了 Jackson(如 `jackson-databind`)依赖,Spring 会自动将 Java 对象序列化为 JSON 格式。 #### 示例代码: ```java import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api") public class ExampleController { @GetMapping("/data") public ResponseEntity<Map<String, Object>> getData() { Map<String, Object> response = new HashMap<>(); response.put("message", "Hello, World!"); response.put("status", "success"); response.put("code", 200); return ResponseEntity.ok(response); // 状态码 200 OK,自动转为 JSON } @GetMapping("/user") public ResponseEntity<User> getUser() { User user = new User("张三", 25); return ResponseEntity.status(201).body(user); // 返回 201 Created 和 JSON 用户对象 } } class User { private String name; private int age; public User() {} // 无参构造函数,Jackson 需要 public User(String name, int age) { this.name = name; this.age = age; } // Getter 和 Setter 方法 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; } } ``` ### 解释: - `@RestController`:表示这是一个 REST 控制器,所有方法默认返回数据而不是视图名称。 - `ResponseEntity<T>`:泛型类型 T 表示响应体的数据类型。Spring 使用 Jackson 自动将其转换为 JSON。 - `ResponseEntity.ok(...)`:返回 HTTP 200 状态码。 - `ResponseEntity.status(201).body(...)`:自定义状态码,比如 201 Created。 - Jackson 库负责将 Java 对象(如 `User` 或 `Map`)**自动序列化为 JSON 字符串**并写入响应体。 确保你的 `pom.xml` 中包含以下依赖(Maven): ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 这个 starter 已经包含了 Jackson 数据绑定支持。 --- ### 注意事项: 1. **实体类必须有无参构造函数**:Jackson 反序列化需要。 2. **字段需要有 getter/setter**:否则无法被序列化/反序列化。 3. **可以返回 `ResponseEntity<String>` 手动拼接 JSON,但不推荐**,建议直接返回对象让框架处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值