首页 > Web开发 > 详细

实体转JSON时,值为null的字段丢失问题

时间:2020-08-10 23:53:22      阅读:352      评论:0      收藏:0      [点我收藏+]

实体转JSON时,值为null的字段丢失问题


  1. 有一实体类,其代码如下:
@Data
public class StudentEntity implements Serializable {

    private static final long serialVersionUID = 2127997065197153097L;
    
    private String name;
    private String sex;
    private Integer age;
    private String phone;
}
  1. 有一Get接口,其代码如下:
@RequestMapping("student/")
@RestController
public class StudentController {

    @GetMapping("get_student")
    public StudentEntity getStudent() {
        StudentEntity student = new StudentEntity();
        student.setName("张三");
        student.setAge(23);
        student.setSex("男");
        // 将‘电话号码’赋值为null
        student.setPhone(null);
        return student;
    }
}
  1. 调用该接口,接收到的数据如下:
{
  "name": "张三",
  "sex": "男",
  "age": 23,
  "phone":null
}
  1. 在配置文件添加以下配置:
spring.jackson.default-property-inclusion=non_null
  1. 重启项目,再次调用接口,接收到的数据如下:
{
  "name": "张三",
  "sex": "男",
  "age": 23
}

可以发现,值为null的’phone’并没有被发送到前端.

  1. 移出第4步操作添加的配置,对StudentEntity实体类进行如下修改:
@Data
public class StudentEntity implements Serializable {

    private static final long serialVersionUID = 2127997065197153097L;
    
    private String name;
    private String sex;
    private Integer age;
    
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String phone;
}
  1. 重启项目,再次调用接口,接收到的数据如下:
{
  "name": "张三",
  "sex": "男",
  "age": 23
}

总结

在Spring项目中,后端向前端发送实体数据时,剔除值为null的字段的方式可以有两种:

  1. 修改配置文件,添加如下配置:
spring.jackson.default-property-inclusion=non_null
  1. 修改实体类,在需要的字段上添加如下注解:
@JsonInclude(JsonInclude.Include.NON_NULL)

同理,当前端从后端接收到的数据中部分键值对"不翼而飞",后端可以检查是否系统是否添加了如上配置或注解.

实体转JSON时,值为null的字段丢失问题

原文:https://www.cnblogs.com/XiaoZhengYu/p/13472890.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!