前言:
现在各位老铁们对“jslong时间”大概比较关怀,同学们都需要学习一些“jslong时间”的相关内容。那么小编也在网摘上网罗了一些关于“jslong时间””的相关资讯,希望我们能喜欢,小伙伴们一起来学习一下吧!之前在SpringBoot2.0.0的时候,我就遇到了这个问题,然后网上说有三种解决方案,如下:
方法一
在实体类的Long字段上加上注解即可
@JsonSerialize(using=ToStringSerializer.class) private Long id;//主键ID,雪花算法生成
指定了ToStringSerializer进行序列化,将数字编码成字符串格式。这种方式的优点是颗粒度可以很精细;缺点同样是太精细,如果需要调整的字段比较多会比较麻烦。
方法二
Jackson有个配置参数WRITE_NUMBERS_AS_STRINGS,可以强制将所有数字全部转成字符串输出。其功能介绍为:Feature that forces all Java numbers to be written as JSON strings.。使用方法很简单,只需要配置参数即可:
spring: jackson: generator: write_numbers_as_strings: true
这种方式的优点是使用方便,不需要调整代码;缺点是颗粒度太大,所有的数字都被转成字符串输出了,如果有些必须是Long的就会有问题,比如我的上传图片markdown编辑器,必须返回Long的标志,所以这种方法不行。
方案三
@Configurationpublic class WebDataConvertConfig implements WebMvcConfigurer { public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); //序列换成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); }}
嗯在SpringBoot2.0.0的时候,我用的是方案二,没问题,但是因为升级SpringBoot导致这种方式也不知道为什么就是不行,所以最后我用了方案1.
标签: #jslong时间