java清空json_java – 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中)

而第二个的问题是,空值不能包含在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

}


版权声明:本文为weixin_39635567原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。