关于解决对象空值转换成JSON丢失字段的问题



这个是最近刚开发的迭代中遇到的问题

频繁的转换JSON  结果导致空值字段丢失   

但是对于前端来说即使字段值为空也需要返回

所以这个时候就需要做处理  

我是用的是  import com.alibaba.fastjson.JSON;

下面以代码为例  :


依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.7</version>
</dependency>

@Data
public class Person implements Serializable { //创建一个实体

    /**
     * 
     */
    private static final long serialVersionUID = 3193754045080382621L;

    private String            name;
    private Integer           sex;
    private Integer           age;
    private String            school;

}

public static void main(String[] args) { //测试
   Person p = new Person();
   p.setName("Akili");
   p.setSex(1);
   p.setAge(24);
   p.setSchool(null);

   String pJson = JSON.toJSONString(p);
   System.out.println("pJson  --- " + pJson);
   String pJson2 = JSON.toJSONString(p, SerializerFeature.WriteMapNullValue);
   System.out.println("pJson2  --- " + pJson2);
   String pJson3 = JSON.toJSONString(p, SerializerFeature.WriteNullStringAsEmpty);
   System.out.println("pJson3  --- " + pJson3);
}

由此可见,当使用重载方法传入一个序列化参数的时候

设置为null的字段依然存在

可以设置null值为null,也可以设置为""

灵活运用

如果要将一个JSON串转换成为一个对象或其他指定类型的话

以下代码:


@Data
public class Person implements Serializable { //创建一个实体

    /**
     * 
     */
    private static final long serialVersionUID = 3193754045080382621L;

    private String            name;
    private Integer           sex;
    private Integer           age;
    private String            school;

}



public static void main(String[] args) {//测试
        Person p = new Person();
        p.setName("Akili");
        p.setSex(1);
        p.setAge(24);
        p.setSchool(null);

        String pJson = JSON.toJSONString(p);
        System.out.println("pJson  --- " + pJson);
        String pJson2 = JSON.toJSONString(p, SerializerFeature.WriteMapNullValue);
        System.out.println("pJson2  --- " + pJson2);
        String pJson3 = JSON.toJSONString(p, SerializerFeature.WriteNullStringAsEmpty);
        System.out.println("pJson3  --- " + pJson3);
        
        Person newP2 = JSON.parseObject(pJson2, Person.class);
        System.out.println(newP2.toString());
        Person newP3 = JSON.parseObject(pJson3, Person.class);
        System.out.println(newP3.toString());
}


//输出结果
pJson  --- {"age":24,"name":"Akili","sex":1}
pJson2  --- {"age":24,"name":"Akili","school":null,"sex":1}
pJson3  --- {"age":24,"name":"Akili","school":"","sex":1}
Person(name=Akili, sex=1, age=24, school=null)
Person(name=Akili, sex=1, age=24, school=)


注:本文仅用来记录自己在工作日常的学习总结,以上仅属于个人实践观点,如有问题请指正。





  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值