jackson:从json中删除一些值并保留一些空值

我有这样的模型:

public class Employee { @JsonProperty("emplyee_id") private Integer id; @JsonProperty("emplyee_first_name") private String firstName; @JsonProperty("emplyee_last_name") private String lastName; @JsonProperty("emplyee_address") private String address; @JsonProperty("emplyee_age") private Byte age; @JsonProperty("emplyee_level") private Byte level; //getters and setters } 

现在我需要使用此(仅)模型创建两个JSON。

第一个必须这样,例如:

 { "employee_id":101, "employee_first_name":"Alex", "employee_last_name":"Light", "employee_age":null, "employee_address":null } 

第二个必须像这样:

 { "employee_id":101, "employee_level":5 } 

顺便说一句,我已经测试了@JsonIgnore@JsonInclude(JsonInclude.Include.NON_NULL)

第一个(我知道的)问题是,那些字段不能包含在其他JSON中(例如,如果level获取此注释,它将不包含在第二个JSON中)

而第二个的问题是, null值不能包含在JSON中。

那么我可以保留空值并阻止一些其他属性包含在JSON中而无需创建额外的模型吗? 如果答案是肯定的,我该怎么办呢? 如果不是我真的很感激,如果有人给我这个状态的最佳解决方案。

非常感谢。

它对你使用@JsonView注释很有用

 public class Views { public static class Public { } public static class Base { } } public class Employee { @JsonProperty("emplyee_id") @JsonView({View.Public.class,View.Base.class}) private Integer id; @JsonProperty("emplyee_first_name") @JsonView(View.Public.class) private String firstName; @JsonProperty("emplyee_last_name") @JsonView(View.Public.class) private String lastName; @JsonProperty("emplyee_address") private String address; @JsonProperty("emplyee_age") private Byte age; @JsonProperty("emplyee_level") @JsonView(View.Base.class) private Byte level; //getters and setters } 

在你的json响应中添加@JsonView(Public / Base.class)它将基于jsonview注释返回

 //requestmapping @JsonView(View.Public.class) public ResponseEntity getEmployeeWithPublicView(){ //do something } 

响应:

 { "employee_id":101, "employee_first_name":"Alex", "employee_last_name":"Light", "employee_age":null, "employee_address":null } 

对于第二个

 //requestmapping @JsonView(View.Base.class) public ResponseEntity getEmployeeWithBaseView(){ //do something } 

响应

 { "employee_id":101, "employee_level":5 }