jackson 前后端交互 忽略字段

发布时间:2023年12月30日


前言

在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 接收参数的时候,可以将属性增加一个名字接收参数(原名称也可以接收)
    等等…
文章来源:https://blog.csdn.net/qq_32419139/article/details/134924905
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。