Java Springboot:选择性地忽略响应中的空值
有一个由多个API使用的模型类,其中如果该模型类中的字段为null,则在JSON响应中返回为null。但是,另一个API使用相同的模型类,在这里,响应中应该省略null字段 有没有一种方法可以实现这一点,而无需创建模型文件的另一个副本,只需使用Java Springboot:选择性地忽略响应中的空值,java,json,spring,spring-boot,Java,Json,Spring,Spring Boot,有一个由多个API使用的模型类,其中如果该模型类中的字段为null,则在JSON响应中返回为null。但是,另一个API使用相同的模型类,在这里,响应中应该省略null字段 有没有一种方法可以实现这一点,而无需创建模型文件的另一个副本,只需使用@JsonInclude(Include.NON_null) 例如 class A { private String b; private String c; private String d; // getters and setters }
@JsonInclude(Include.NON_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
@Data
public class A {
private String b;
private String c;
private String d;
}
@JsonInclude(JsonInclude.Include.NON_NULL)
public class B extends A { }
序列化这些类时,类A的JSON可能如下所示
{
"b": "val1",
"c": null,
"d": "val2"
}
B班也是这样
{
"b": "val1",
"d": "val2"
}
如果您尚未在项目中使用Lombok,请将其添加到POM中,以使@Data
工作:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
org.projectlombok
龙目
真的
那么我想你必须这样做:这看起来比创建这个类的副本并注释它还要添加更多的代码:)是的,我知道,这并不漂亮。是一个在线程末尾讨论使用反射修改DTO的人。试图找到更具体的东西。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>