今天更新了 1.2.20 版本发现,发现空值的序列化与之前版本不一致,之前默认不序列化空值,新版本序列化了空值,不得以又退回了之前的版本,请问,新版本就这个问题怎么与以前保持一致。
rjzwgtxy1#
你是怎样用的?不应该哈
gz5pxeao2#
这是我的配置,Spring版本4.2.8,Controller使用了@responsebody注解,直接使用JSON.toJSONString(obj)方法测试了下输出的结果也是一样。使用1.2.15到1.2.19版本都试了下,只有1.2.20不对。
JSON.toJSONString(obj)
<bean id="fastJsonConfig" class="com.alibaba.fastjson.support.config.FastJsonConfig"> <property name="charset" value="UTF-8"/> <property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"/> <property name="features"> <list value-type="com.alibaba.fastjson.parser.Feature"> <value>OrderedField</value> </list> </property> <property name="serializerFeatures"> <list value-type="com.alibaba.fastjson.serializer.SerializerFeature"> <value>WriteNullStringAsEmpty</value> <value>WriteNullListAsEmpty</value> <value>SkipTransientField</value> <value>WriteNonStringKeyAsString</value> <value>WriteDateUseDateFormat</value> <value>WriteNullBooleanAsFalse</value> </list> </property> </bean> <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> <property name="fastJsonConfig" ref="fastJsonConfig"/> </bean>
rwqw0loc3#
测试了一下,是这样的
public class Model { private String a; private int b; getter&setter; }
public static void main(String[] args) { Model a = new Model(); a.setB(1); System.out.println( JSON.toJSONString(a,SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullListAsEmpty,SerializerFeature.SkipTransientField, SerializerFeature.WriteNonStringKeyAsString,SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteNullBooleanAsFalse ));//output {"b":1} @ 1.2.19 // output {"a":"","b":1} @ 1.2.20 }
8gsdolmq4#
既然带了 SerializerFeature.WriteNullStringAsEmpty 这个feature,现在的输出才更符合你的意图哈
gcmastyq5#
SerializerFeature.WriteNullStringAsEmpty 这个feature 字面意思应该是只对String类型做处理吧,但为什么现在对所有类型都做了处理,如果是非String类型的value为null,则会将null序列化成“null”,这个感觉不是很合理呀。
5条答案
按热度按时间rjzwgtxy1#
你是怎样用的?不应该哈
gz5pxeao2#
这是我的配置,Spring版本4.2.8,Controller使用了@responsebody注解,直接使用
JSON.toJSONString(obj)
方法测试了下输出的结果也是一样。使用1.2.15到1.2.19版本都试了下,只有1.2.20不对。rwqw0loc3#
测试了一下,是这样的
8gsdolmq4#
既然带了 SerializerFeature.WriteNullStringAsEmpty 这个feature,现在的输出才更符合你的意图哈
gcmastyq5#
SerializerFeature.WriteNullStringAsEmpty 这个feature 字面意思应该是只对String类型做处理吧,但为什么现在对所有类型都做了处理,如果是非String类型的value为null,则会将null序列化成“null”,这个感觉不是很合理呀。