今天碰到一个很奇怪的问题:后端返回的数据中ID字段数据对应不上,数据库和前端得到的数据不一致,debug了下,原因是js解析json数据时,Long类型是用Number接收,Number最多是16位,所以导致后面几位的数据丢失,查了下几种解决方案,最终使用如下解决方案:Long类型使用json解析时用String类型解析,只需要自定义配置下Json的配置信息即可,配置信息如下:
@Configuration
public class JacksonConfig {
@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapperjacksonObjectMapper(Jackson2ObjectMapperBuilder builder)
{
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 全局配置序列化返回 JSON 处理
SimpleModule simpleModule =new SimpleModule();
//JSON Long ==> String
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
objectMapper.registerModule(simpleModule);
return objectMapper;
}
}
补充:
注意使用上面方法可能会对前端逻辑有影响,我这样操作后,有前端页面会提示需要字符串类型转数字类型,所以还是需要谨慎一些。