spring默认支持的是jackson2的json解析器.如今大部分人都习惯了fastJson的解析器.如今简单的说下如何配置json解析器java
配置以下:spring
@Configuration public class WebConfig extends WebMvcConfigurerAdapter { //JackSon 配置 @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); builder.serializationInclusion(JsonInclude.Include.NON_NULL); ObjectMapper objectMapper = builder.build(); SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); objectMapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);// 忽略 transient 修饰的属性 converters.add(new MappingJackson2HttpMessageConverter(objectMapper)); super.configureMessageConverters(converters); } }
能够使用@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")来格式化Date数据的输出. 默认日期是0时区的.早上8点会成为早上0点 对于@Transient注解是支持的,不会输出该注解修饰的字段json
@Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.configureMessageConverters(converters); FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullBooleanAsFalse,SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteEnumUsingToString,SerializerFeature.PrettyFormat, //禁止循环引用,不然会出现 {"$ref":"$.data.giveAuthorList[0].goods"} SerializerFeature.DisableCircularReferenceDetect, //全局date 默认输出格式为"yyyy-MM-dd HH:mm:ss" 可经过修改com.alibaba.fastjson.Json.DEFFAULT_DATE_FORMAT设置 SerializerFeature.WriteDateUseDateFormat ); fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastConverter); } }
该配置支持1.2.10之后的版本,若是有问题,请升级fastjson的版本. 能够使用@JSONField来配置序列化的属性app
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
ide
对于@Transient注解是不支持的,仍是会输出该注解修饰的字段;ui
fastJsonConfig.setSerializerFeatures(SerializerFeature... serializerFeatures),这个方法配置序列化的特性.可传入多个特性.以前只有一个SerializerFeature.PrettyFormat,因此字段值为空就没法输出该字段. 2月5号发现后添加了一些处理空值的特性,和code