三大主流框架
- jackson
- gson
- fastjson
序列化和反序列化:
序列化:对象->JSON.(响应 JSON》
反序列化:JSON-z对象(请求参数是 J50N)
HttpMessageConverter:
转换器:对象->J5ON,J50N-~对象
所有的 JSON 工具都会提供各自的 HttpMessageConverter。
- jackson: MappingJackson2HttpMessageConverter
- gson: GsonHttpMessageConverter
- fastjson:
SpringAVC 框架中,jackson 和 gson 的HttpMe
ObjectMapper
ssageConverter已经自动配置好了,只需要添加依赖就可以了,fastjson则需要开发者手动配置HttpMessageConverter
jackson配置,有两种思路:
在各个对象上面配置,就是在实体类上面添加一些注解进行配置,下面是一些常见的注解
-
@JsonProperty(value = "name",index = 98)
序列化或者反序列化时指定属性序列化的名称,默认是属性名,index越小排列就越靠前
-
@JsonIgnoreProperties({"password"})
序列化或者反序列化时忽略某字段,可以指定多个,是类注解 -
@JsonPropertyOrder({"birthday","username","address"})
指定序列化的顺序,类似于 @JsonProperty的index -
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
//日期格式化,前面是日期格式,后面是时区
-
@JsonIgnore
序列化或者反序列化时忽略某一个字段,是在变量上面的注解
全局配置
@Configuration
public class WebMvcConfig {
@Bean
ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return new ObjectMapper();
}
}
因为jackson是ObjectMapper进行配置,我们可以自己定义一个ObjectMapper,注入到Bean中,这样SpringBoot只会加载到我们自己的ObjectMapper