发表于: 2025-05-18 20:15:45

0 59


今天完成的事情:继续任务点接着学习:

  • 15.不用使用JSON Tag-lib,直接用Spring 返回JSON对象,对比两种实现方式的差别和应用场景

遇到的问题:看不太懂什么意思。。。。

先尝试去搜索一下。

1. 直接使用Spring返回JSON的实现方式

Spring(包括Spring MVC和Spring Boot)默认通过JacksonGson库实现JSON序列化,无需额外配置即可返回JSON数据。主要方式包括:

  • **@ResponseBody@RestController**
    直接在Controller方法上使用注解,Spring会自动将返回值转换为JSON。例如:


@RestController

public class UserController {

    @GetMapping("/user/{id}")

    public User getUser(@PathVariable Long id) {

        return userService.findById(id); // 自动转为JSON

    }

}

优势:简洁、无需手动处理序列化,适合RESTful API开发

**ResponseEntity**
更灵活地控制HTTP状态码和响应头

@GetMapping("/data")

public ResponseEntity<Map<String, Object>> getData() {

    Map<String, Object> data = new HashMap<>();

    data.put("name", "John");

    return new ResponseEntity<>(data, HttpStatus.OK);

}

适用场景:需要动态调整响应状态或头部信息时

手动序列化(ObjectMapper
通过JacksonObjectMapper手动转换对象为JSON字符串,适用于复杂逻辑:

@GetMapping("/custom")

public String getCustomJson() throws JsonProcessingException {

    ObjectMapper mapper = new ObjectMapper();

    return mapper.writeValueAsString(customObject);

}

优势:完全控制序列化过程,但代码量较多


JSON Tag-lib的实现方式

JSON Tag-lib是JSP标签库,用于在JSP页面中生成JSON数据,例如:

<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>

<json:object>

    <json:property name="name" value="${user.name}"/>

</json:object>

特点

  • 适用场景:传统JSP项目中,需在页面层直接生成JSON数据时使用。
  • 缺点
    • 耦合度高:需依赖JSP环境,不适合前后端分离架构。
    • 功能有限:仅支持简单序列化,复杂逻辑需结合Java代码。

3. 两种方式的对比

特性Spring(Jackson/Gson)JSON Tag-lib
适用场景RESTful API、前后端分离传统JSP项目
配置复杂度低(Spring Boot默认集成)中(需引入标签库和JSP配置)
灵活性高(支持注解、编程式控制)低(仅限JSP标签)
性能高(Jackson优化良好)中(额外解析标签)
前后端解耦完全解耦耦合JSP环境

选择?

  • 优先使用Spring
    现代项目(尤其是微服务或前后端分离)推荐直接通过@RestController返回JSON,简洁高效
  • JSON Tag-lib的遗留场景
    仅限旧版JSP项目,且需在页面中动态生成JSON时使用

明天的计划:把今天的任务点完全看会。然后继续任务点走。



返回列表 返回列表
评论

    分享到