fastjson字符串转map_fastjson(八)将对象中的空值输出

这篇博客探讨了如何在fastjson中设置输出Map中的空值。默认情况下,fastjson不会序列化空值,但通过启用SerializerFeature.WriteMapNullValue,可以将null值转换为特定的默认值。例如,空Collection输出为[], 空字符串输出为"""
摘要由CSDN通过智能技术生成

更多java文章与项目资源、毕业设计、福利

关注公众号 程序猿forever

在fastjson中,缺省是不输出空值的。无论Map中的null和对象属性中的null,序列化的时候都会被忽略不输出,这样会减少产生文本的大小。但如果需要输出空值怎么做呢?

使用SerializerFeature.WriteMapNullValue:

Model obj = ...;JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);12

空值特别处理:

SerializerFeature描述WriteNullListAsEmpty将Collection类型字段的字段空值输出为[]WriteNullStringAsEmpty将字符串类型字段的空值输出为空字符串 “”WriteNullNumberAsZero将数值类型字段的空值输出为0WriteNullBooleanAsFalse将Boolean类型字段的空值输出为false


来看一下示例代码:

package json.fastjson.empty;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;public class TestNull {    public static void main(String[] args) {        // WriteNullListAsEmpty 将Collection类型字段的字段空值输出为[]        // WriteNullStringAsEmpty 将字符串类型字段的空值输出为空字符串 ""        // WriteNullNumberAsZero 将数值类型字段的空值输出为0        // WriteNullBooleanAsFalse 将Boolean类型字段的空值输出为false        Model obj = new Model();        System.out.println("------------------加上参数------------------------------");        String text = JSON.toJSONString(obj,                 SerializerFeature.WriteNullListAsEmpty,                 SerializerFeature.WriteNullStringAsEmpty,                SerializerFeature.WriteNullNumberAsZero,                SerializerFeature.WriteNullBooleanAsFalse,                SerializerFeature.WriteMapNullValue,                SerializerFeature.PrettyFormat);        System.out.println(text + " ");        System.out.println("------------------不加参数------------------------------");        text = JSON.toJSONString(obj,                SerializerFeature.PrettyFormat);        System.out.println(text);    }}class Model {    public int iFull = 9;    public int iEmpty;    public Integer integerFull = 9;    public Integer integerEmpty;    public boolean bFull = true;    public boolean bEmpty;    public Boolean BFull = true;    public Boolean BEmpty;    public List listFull = Arrays.asList("挖", "坑", "埋", "你");    public List listEmpty;    public Map mapFull = new HashMap() {{put("a", "b");}};    public Map mapEmpty;}
73fd944f07d2222eda9f722109ddedc0.png
package json.fastjson.empty;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;public class TestNull {    public static void main(String[] args) {        // WriteNullListAsEmpty 将Collection类型字段的字段空值输出为[]        // WriteNullStringAsEmpty 将字符串类型字段的空值输出为空字符串 ""        // WriteNullNumberAsZero 将数值类型字段的空值输出为0        // WriteNullBooleanAsFalse 将Boolean类型字段的空值输出为false        Model obj = new Model();        System.out.println("------------------加上参数------------------------------");        String text = JSON.toJSONString(obj,                 SerializerFeature.WriteNullListAsEmpty,                 SerializerFeature.WriteNullStringAsEmpty,                SerializerFeature.WriteNullNumberAsZero,                SerializerFeature.WriteNullBooleanAsFalse,                SerializerFeature.WriteMapNullValue,                SerializerFeature.PrettyFormat);        System.out.println(text + " ");        System.out.println("------------------不加参数------------------------------");        text = JSON.toJSONString(obj,                SerializerFeature.PrettyFormat);        System.out.println(text);    }}class Model {    public int iFull = 9;    public int iEmpty;    public Integer integerFull = 9;    public Integer integerEmpty;    public boolean bFull = true;    public boolean bEmpty;    public Boolean BFull = true;    public Boolean BEmpty;    public List listFull = Arrays.asList("挖", "坑", "埋", "你");    public List listEmpty;    public Map mapFull = new HashMap() {{put("a", "b");}};    public Map mapEmpty;}
4fca9bc098458d6acdeea28c879e9eb8.png
package json.fastjson.empty;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;public class TestNull {    public static void main(String[] args) {        // WriteNullListAsEmpty 将Collection类型字段的字段空值输出为[]        // WriteNullStringAsEmpty 将字符串类型字段的空值输出为空字符串 ""        // WriteNullNumberAsZero 将数值类型字段的空值输出为0        // WriteNullBooleanAsFalse 将Boolean类型字段的空值输出为false        Model obj = new Model();        System.out.println("------------------加上参数------------------------------");        String text = JSON.toJSONString(obj,                 SerializerFeature.WriteNullListAsEmpty,                 SerializerFeature.WriteNullStringAsEmpty,                SerializerFeature.WriteNullNumberAsZero,                SerializerFeature.WriteNullBooleanAsFalse,                SerializerFeature.WriteMapNullValue,                SerializerFeature.PrettyFormat);        System.out.println(text + " ");        System.out.println("------------------不加参数------------------------------");        text = JSON.toJSONString(obj,                SerializerFeature.PrettyFormat);        System.out.println(text);    }}class Model {    public int iFull = 9;    public int iEmpty;    public Integer integerFull = 9;    public Integer integerEmpty;    public boolean bFull = true;    public boolean bEmpty;    public Boolean BFull = true;    public Boolean BEmpty;    public List listFull = Arrays.asList("挖", "坑", "埋", "你");    public List listEmpty;    public Map mapFull = new HashMap() {{put("a", "b");}};    public Map mapEmpty;}

输出结果:

------------------加上参数------------------------------{    "BEmpty":false,    "BFull":true,    "bEmpty":false,    "bFull":true,    "iEmpty":0,    "iFull":9,    "integerEmpty":0,    "integerFull":9,    "listEmpty":[],    "listFull":[        "挖",        "坑",        "埋",        "你"    ],    "mapEmpty":null,    "mapFull":{        "a":"b"    }} ------------------不加参数------------------------------{    "BFull":true,    "bEmpty":false,    "bFull":true,    "iEmpty":0,    "iFull":9,    "integerFull":9,    "listFull":[        "挖",        "坑",        "埋",        "你"    ],    "mapFull":{        "a":"b"    }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值