第一种 :需要精确指定某些字段,id或者日期等。
添加类LongJsonSerializer,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
因此在包里再添加类LongJsonDeserializer,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
接下来是使用这两个类。
在需要处理的id字段上,加上注解。
1 2 3 4 5 6 |
|
第二种: 全局设置,该设置会将影响所有指定类型的字段,比如Long 或者Date
@Configuration public class LongToJsonConfig extends WebMvcConfigurationSupport { /** * springboot * 解决long、bigint转json丢失精度 */ public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule(); /** * 大写Long 转string( 如果java使用的是Long包装类) 用于响应请求 */ simpleModule.addSerializer(Long.class, ToStringSerializer.instance); /** * 序列换成json时,将所有的long变成string * 因为js中字符转长整型时可能是long基本类型 */ simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); jackson2HttpMessageConverter.setObjectMapper(objectMapper); converters.add(jackson2HttpMessageConverter); }
还有一种是配置式:
在配置文件中设置如下参数
#该设置将会影响全部数字类型的字段 spring.jackson.generator.write-numbers-as-strings=true spring.jackson.date-format="yyyy-MM-dd HH:mm:ss"