关于解决对象空值转换成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=)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值