当用SpringBoot Cli创建SpringBoot项目之后 如果你引入了springweb
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
那么表示你已经有了jackjson依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
也就是
@RestController
你返回的都是以JSON格式返回消息
那么经常看到有些项目还要引入阿里的FastJSON
这是为何?
原因在于
相对来说 Jackson 的 ObjectMapper 配置复杂,FastJSON 更“即插即用”。
-
JSON.toJSONString(obj)
非常简洁 -
支持直接 parse 和转为 Map、List 等对象
-
自带的序列化过滤器非常方便
-
对
JSONObject
、JSONArray
操作更灵活
示例:
java
复制编辑
User user = new User("Tom", 18); String json = JSON.toJSONString(user); // 快速转 JSON User u = JSON.parseObject(json, User.class); // 快速解析
虽然 FastJSON 功能多,但它安全漏洞曾较多(如远程代码执行),阿里官方也推荐尽量使用最新版本(2.x
)。
引入 FastJSON 并不会替换掉 Spring 默认 JSON 输出
-
如果你想让 SpringBoot Controller 返回的 JSON 用 FastJSON 而不是 Jackson,还要 配置 FastJSON 的 HttpMessageConverter;
-
否则 FastJSON 只是个工具类,和 Controller 的 JSON 返回无关。