fastjson2怎么让null属性序列化成空字符串
ValueFilter valueFilter = (o, s, o1) -> { if (Objects.isNull(o1)) { return ""; } else { return o1; } };
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List
at com.alibaba.fastjson2.writer.ObjectWriterImplList.write(ObjectWriterImplList.java:207)
at com.alibaba.fastjson2.writer.ObjectWriterAdapter.writeWithFilter(ObjectWriterAdapter.java:383)
at com.alibaba.fastjson2.writer.ObjectWriter_2.write(Unknown Source)
at com.alibaba.fastjson2.writer.ObjectWriterImplList.write(ObjectWriterImplList.java:254)
at com.alibaba.fastjson2.writer.FieldWriterObject.write(FieldWriterObject.java:196)
at com.alibaba.fastjson2.writer.ObjectWriterAdapter.writeWithFilter(ObjectWriterAdapter.java:387)
at com.alibaba.fastjson2.writer.ObjectWriter_1.write(Unknown Source)
at com.alibaba.fastjson2.JSON.toJSONString(JSON.java:1005)
at com.jtech.srm.sys.Test1.test1(Test1.java:121)
原提问者GitHub用户JackJieZhang
在fastjson2 中你可以通过实现 ValueFilter 接口来将null属性序列化成空字符串,样例如下:
ValueFilter valueFilter = new ValueFilter() { @Override public Object process(Object object, String name, Object value) { if (value == null) { return ""; } return value; } }; String json = JSON.toJSONString(yourObject, valueFilter); 需要注意的是,在fastjson2中使用ValueFilter处理List对象时,需要判断该对象是否为List类型,如果是,则需要将List序列化成Json数组,否则会抛出 ClassCastException 异常。
ValueFilter valueFilter = new ValueFilter() { @Override public Object process(Object object, String name, Object value) { if (value instanceof List) { return JSON.toJSON(value); } else if (value == null) { return ""; } return value; } }; String json = JSON.toJSONString(yourObject, valueFilter); 这样可以避免上述异常。
Bean bean = ...; JSON.toJSONString(bean, JSONWriter.Feature.NullAsDefaultValue); // 将空置输出为缺省值,Number类型的null都输出为0,String类型的null输出为"",数组和Collection类型的输出为[]
原回答者GitHub用户wsxe9988
可以使用FastJson的serialzeFeatures属性来实现这个效果。
很简单,只需要在实体类的属性上加上注解
@JSONField(serialzeFeatures= {SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty})
private String description;
其中SerializerFeature.WriteMapNullValue是展示值为null的值,默认是不展示的,SerializerFeature.WriteNullStringAsEmpty是将null值转成空字符串。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。