繁体   English   中英

Springboot:忽略 null 值响应可选

[英]Springboot: Ignore null values in response optionally

There's a model class used by multiple APIs wherein if fields in this model class is null it is returned as null in the JSON response. 但是,另一个 API 正在使用相同的 model class ,此处应省略响应中的 Z37A6259CC0C1DAE29BD9A786648DFF 字段。

有没有办法在不创建 model 文件的另一个副本的情况下实现这一点,并且只需使用@JsonInclude(Include.NON_NULL)引入 null 字段

例子,

class A {
 private String b;
 private String c;
 private String d;
 // getters and setters
}

需要响应 1

"A": {
  "b": "val1",
  "c": null,
  "d": "val2"
}

需要响应 2(省略空值)

"A": {
  "b": "val1",
  "d": "val2"
}

有没有办法使用单个 model class 来实现这些行为? 实例化时的某种配置或什么?

在阅读了来自博客和 SO 上的大量文档和代码之后,我想说的是,实现您想要的东西所需的额外代码行数量和复杂性并不能证明付出的努力是合理的。

在下面的示例中,您将获得一个额外的 class,但它很少。 如果要包含 null 字段,请使用 class A,否则使用 class B。

@Data
public class A {
   private String b;
   private String c;
   private String d;
}

@JsonInclude(JsonInclude.Include.NON_NULL)
public class B extends A { }

序列化这些类时,JSON 对于 class A 可能如下所示

{
  "b": "val1",
  "c": null,
  "d": "val2"
}

就像 Class B

{
  "b": "val1",
  "d": "val2"
}

如果您还没有在您的项目中使用 Lombok,请将其添加到您的 POM 以使@Data工作:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM