package net.educoder.controller; import net.educoder.entity.TBlog; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap; import java.util.Map; @Controller public class Step2Controller { /** * @param blog 博客对象 * @return 返回JSON对象 * <p> * 案例如下: * {"data":{"blogId":1,"blogTitle":"博客系统","blogContent":null,"userId":1,"typeId":1,"blogStatus":1,"createTime":"2018-04-28 08:55:55","updateTime":"2018-04-28 08:55:55","coverImage":"/pic/sad1wda3ddsac.jpg"}} */ @RequestMapping("/step2") @ResponseBody /********** Begin **********/ public Map<String, Object> blogValueToJson(TBlog blog) { Map<String, Object> map = new HashMap<>(); map.put("data", blog); return map; } /********** End **********/ }
时间: 2025-06-21 17:58:17 浏览: 19
### Spring MVC 控制器返回 TBlog 对象作为 JSON 响应示例代码
在 Spring MVC 中,可以通过 `@ResponseBody` 注解将控制器方法的返回值直接写入 HTTP 响应体中。如果返回的是对象类型(如 `TBlog`),Spring 会自动将其序列化为 JSON 格式[^1]。为了确保正常工作,需要确保以下几点:
- 引入 Jackson 或 Gson 等 JSON 处理库。
- 在项目中配置正确的依赖项。
- 使用 `@RestController` 或结合 `@Controller` 和 `@ResponseBody`。
以下是完整的代码示例:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController // 自动将返回值转换为 JSON 并写入响应体
@RequestMapping("/api") // 统一前缀路径
public class BlogController {
@Autowired
private BlogService blogService; // 假设已定义 BlogService 接口
@RequestMapping(value = "/blogs", method = RequestMethod.GET)
public List<TBlog> getBlogs() {
return blogService.queryAll(); // 返回 TBlog 列表
}
@RequestMapping(value = "/blog", method = RequestMethod.POST)
public TBlog createBlog(TBlog blog) {
return blogService.save(blog); // 返回新创建的 TBlog 对象
}
}
```
#### 注意事项
1. **JSON 序列化依赖**:确保项目中包含 Jackson 的 Maven 依赖:
```xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version> <!-- 版本号根据实际情况调整 -->
</dependency>
```
2. **服务层实现**:上述代码假设 `BlogService` 已经实现,并且包含 `queryAll()` 和 `save(TBlog blog)` 方法。
3. **乱码问题**:如果遇到乱码问题,可以检查以下内容:
- 确保 `application.properties` 或 `application.yml` 中配置了字符集编码:
```properties
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
```
- 或者在控制器方法上添加 `produces` 属性指定编码:
```java
@RequestMapping(value = "/blogs", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
```
4. **实体类要求**:`TBlog` 类需要提供无参构造函数和 getter/setter 方法,否则可能导致序列化失败。
---
###
阅读全文
相关推荐















