Spring Boot 配置 Jackson
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ; - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观
本节中,您将学习如何在 Spring Boot 中配置 Jackson。什么是 Jackson ? 有什么作用?
Jackson 是 Spring Boot 内置的 Json 解析框架,用来完成出入参的序列化和反序列化。通常,我们会在 Controller 类中方法上,加上 @RequestBody
或者 @ResponseBody
注解,Spring Boot 会自动对出入参做 Json 解析与转换工作。
注意:
@RequestBody
用于将入参 Json 转换成对象,而@ResponseBody
用于将对象转换成 Json 返回。
已经内置,为何还需要配置?
内置的 Jackson 无法满足生产所需,比如说对自定义日期格式,亦或者我们想适配 Java 8 新加入的 LocalDate
,LocalDateTime
等。
下面以自定义日期格式转换为例,新建一个示例项目,定义一个 /user
接口:
package site.exception.springbootjackson.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import site.exception.springbootjackson.entity.User;
/**
* @author www.exception.site (exception 教程网)
* @date 2019/2/16
* @time 21:03
* @discription
**/
@RestController
public class UserController {
/**
* 定义一个创建用户的接口
* @param user
* @return
*/
@PostMapping("/user")
public User createUser(@RequestBody User user) {
System.out.println(user.getCreateTime().toString());
// 将 user 再以 Json 的形式返回
return user;
}
}
User.java:
package site.exception.springbootjackson.entity;
import java.io.Serializable;
import java.util.Date;
/**
* @author www.exception.site (exception 教程网)
* @date 2019/2/16
* @time 21:00
* @discription
**/
public class User implements Serializable {
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private String password;
/**
* 创建时间
*/
private Date createTime;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
上面这个接口我们直接使用的 @RestController
, 它会将此 Controller 中的方法均以 Json 的格式进行返回。完成这一切以后,启动项目,并通过 Postman 访问该接口,测试一下 Json 格式提交能否进行正常转换:
很不幸,报错了!接下来,我们需要自定义格式转换。
配置 Jackson
定义一个 JacksonConfig
配置类:
package site.exception.springbootjackson.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
/**
* @author www.exception.site (exception 教程网)
* @date 2019/2/17
* @time 19:32
* @discription
**/
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
// 自定义日期转换格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return objectMapper;
}
}
重新启动项目,再次对该接口访问:
可以看到正常返回 Json 对象,并且控制台也正确打印出了 createTime
:
到此,在 Spring Boot 中配置 Jackson,并对日期自定义格式转换就完成了!