使用了lombok省略了实体类的set和get方法
JSON 处理
三大主流框架
-jsckson
-json
-fastjson
序列化 和 反序列化
序列化: 对象 -> JSON (响应JSON)
反序列化: JSON -> 对象 (请求参数是JSON)
HttpMessageConverter:
转换器: 对象->JSON JSON->对象
所有的JSON工具都会自动提供 HttpMessageConverter
-jackjson:MappingJackson2HttpMessageConverter(自动动)
-json:MappingJackson2HttpMessageConverter
-fastjson
springMVC 框架中 ,jackson 和 gson 已经自动配置好了(只需要添加依赖),fastjson需要开发者手动配置:HttpMessageConverter
ObjectMapper、Gson
1.springboot整合jackson(springboot项目中自动添加json依赖,直接使用,不需要配置)
案例
bean上面配置
@Data
//批量忽略属性字段
//@JsonIgnoreProperties({"age","name"})
public class User {
//指定序列化/反序列化时的名称,默认就是属性名
@JsonProperty("aaage")
private Integer age;
//显示顺序
@JsonProperty(index = 98)
private String name;
//配置日期的格式(注意时区问题)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/shanghai")
private Date birthday;
//序列化/反序列化忽略某一个字段
@JsonIgnore
private String address;
}
Jackson配置:
1.在各个对象配置
需要在每个实体类中配置json
2.全局配置
创建配置类,重新定义ObjectMapper对象
@Configuration
public class WebMvcConfig {
@Bean
ObjectMapper objectMapper(){
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return om;
}
}
常用的属性两个
1. //指定序列化/反序列化时的名称,默认就是属性名
@JsonProperty("aaage")
private Integer age;
2.//配置日期的格式(注意时区问题)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/shanghai")
private Date birthday;
2.springboot整合gson(springboot项目中自动添加json依赖,需要先移除掉json依赖,添加gson依赖
maven 里手去除json
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除掉json -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- gson begin-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- gson end-->
手动配置gson
@Configuration
public class WebMvcConfig {
@Bean
ObjectMapper objectMapper(){
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return om;
}
}
3.fastjson的使用,首先去除掉json,在手动添加fastjson
maven 里手去除json
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除掉json -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
public class WebMvcConfig2 {
@Bean
FastJsonHttpMessageConverter fastJsonHttpMessageConverter (){
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setCharset(Charset.forName("utf-8"));
fastJsonConfig.setDateFormat("yyyy-MM-dd");
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
fastJsonHttpMessageConverter.setDefaultCharset(Charset.forName("utf-8"));
return fastJsonHttpMessageConverter;
}
}