扬仔的杂货铺

分享微不足道的经验,记录稀奇古怪的玩意

0%

返回json空值去掉null和long型数据精度丢失问题

一个SpringBoot的Config文件

全局配置Long转String

接收时忽略实体类中不存在的字段

去除序列化中的null和空字符串

防止Long型数据丢失精度

1
2
3
4
5
6
7
在实体类的IDLong型字段上加上以下注解

fastjson
@JSONField(serializeUsing= ToStringSerializer.class)//貌似不行

jackson
@JsonSerialize(using = ToStringSerializer.class)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* 全局配置Long转String
* 接收时忽略实体类中不存在的字段
* 去除序列化中的null和空字符串
* 防止Long型数据丢失精度
*
* @author changwei
* @date 2020/8/20 9:05 上午
*/
@EnableWebMvc
@Configuration
public class WebDataConvertConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
//去除序列化中的null和空字符串
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_ABSENT);
//全局忽略实体类中不存在的字段
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
/**
* 序列换成json时,将所有的long变成string
* 因为js中得数字类型不能包含所有的java long值
*/
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
jackson2HttpMessageConverter.setObjectMapper(objectMapper);
converters.add(jackson2HttpMessageConverter);
}
}