jackson 前后端交互 忽略字段

48 阅读2分钟

文章目录


前言

在java服务的前后端交互中,经常有类似这样的需求:

  • 某些字段就是不应该被返回到前端(无论是否为空或null),但是对于后端来说至关重要
  • 某些字段为空或者null ,不应该返回
  • 某些字段即使是空的或者null, 也要返回

一、基于Jackson的交互处理

一般我们可以通过Jackson提供的几个注解来实现上述需求

二、使用步骤

1.字段为空或null

不返回

代码如下(示例):

@JsonInclude(Include.NON_EMPTY)
public class AppCollect{

  //标识符
  private String eid;
  //创建时间
  private Date createtime;
  //用户id
  private String userId;
  //应用编号
  private String appCode;
  //排序
  private Integer sort;
  //创建人
  private String createuid;
  //企业ID
  private String ecompanyid;
  //删除标识
  private Integer delflag;
}

@JsonInclude(Include.NON_EMPTY) 这样,字段值为空或者null,就不会返回该字段了

2.字段即使是空的或者null, 也要返回

代码如下(示例):

@JsonInclude(Include.NON_EMPTY)
public class AppCollect{

  //标识符
  private String eid;
  //创建时间
  @JsonInclude(Include.ALWAYS)
  private Date createtime;
  //用户id
  private String userId;
  //应用编号
  private String appCode;
  //排序
  private Integer sort;
  //创建人
  private String createuid;
  //企业ID
  private String ecompanyid;
  //删除标识
  private Integer delflag;
}

@JsonInclude(Include.ALWAYS) 这样,字段值为空或者null,就不会返回该字段了,但是createtime 字段一定会有

3.某些字段就是不应该被返回到前端

代码如下(示例):

@JsonInclude(Include.NON_EMPTY)
public class AppCollect{

  //标识符
  private String eid;
  //创建时间
  @JsonInclude(Include.ALWAYS)
  private Date createtime;
  //用户id
  @JsonIgnore
  private String userId;
  //应用编号
  private String appCode;
  //排序
  private Integer sort;
  //创建人
  private String createuid;
  //企业ID
  private String ecompanyid;
  //删除标识
  private Integer delflag;
}

@JsonIgnore 这样,userId就一定不会被返回到前端了


总结

Jackson 还有很多其他注解,也都是非常实用的;
比如:

  1. @JsonProperty 转成json的时候,将字段名字变为另一个

  2. @JsonAlias 接收参数的时候,可以将属性增加一个名字接收参数(原名称也可以接收)
    等等…

本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。