Java JAX-RS只序列化少数属性
我们有一个类似下面的DTOJava JAX-RS只序列化少数属性,java,rest,jax-rs,Java,Rest,Jax Rs,我们有一个类似下面的DTO public class Student { private String name; private String id; private ExamResults results; private Address residentialAddress; private Address permanentAddress; // setter and getter methods } 多个端点(如student/deta
public class Student {
private String name;
private String id;
private ExamResults results;
private Address residentialAddress;
private Address permanentAddress;
// setter and getter methods
}
多个端点(如student/details/{studId}、student/details/{studId}/results)使用相同的DTO
在student/details/{studId}端点中,我们不填充结果
属性。但它仍然在响应中返回为null
类似地,在student/details/{studId}/results中,我们不填充permanentAddress
和residentialAddress
,但它们仍然在响应中作为null返回
基本上,我希望控制基于端点序列化的属性,而不管它们是否为null
谢谢。您可以尝试使用
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Student {
此注释来自jackson,仅当底层JAX-RS实现在内部使用jackson时才起作用。由于不同应用程序服务器的底层实现不同,因此解决方案可能不起作用。但事实上,您负责库管理(构建工具:maven、gradle、ant等)。Application server不会更改它。我们不希望管理jaxrs库,希望使用默认的Application server实现。抱歉,我已编辑了我的问题。我想控制序列化哪些属性,而不管它们是否为null。在这种情况下,您可以尝试编写自定义JsonSerializer并实现所有规则。(Jackson)看看JsonSerializer或ContextResolver。这里有一个例子