【发布时间】:2017-04-27 07:27:00
【问题描述】:
我有一个从 api A 接收的这种格式的传入 json
{
person:[
{
"name": "A"
"gender": "male"
},
{
"name": "A"
"gender": "female"
},
{
"name": "A"
"gender": "male"
}
]
}
我想过滤性别为女性的元素,并在我的端点上以这样的格式给出响应 json
{
person:[
{
"name": "A"
"gender": "male"
},
{
"name": "A"
"gender": "male"
}
]
}
有没有办法在映射/序列化过程中使用杰克逊注解来做到这一点
@JsonAutoDetect
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person{
private String name;
private String gender;
//getter setters
}
@JsonAutoDetect
@JsonIgnoreProperties(ignoreUnknown = true)
public class JsonResponseModel{
private List<Person> person;
//getter setter
}
【问题讨论】:
-
我不这么认为....我不想隐藏 json 属性,如果属性值为“女性”,我想忽略整个元素
-
你想过滤掉女性元素,这意味着你需要为女性过滤 JsonResponseModel。如果我没记错的话,这个问题的回答正好提供了这一点。或者,您可以在发送之前手动过滤掉 jsonResponse。
-
我只能手动操作,就像我只能从列表中删除元素一样,建议我只映射/序列化符合条件的元素,有没有办法?
-
您收到哪个元素?如果 JsonResponseModel 然后对其进行过滤,否则不要添加从 Person 收到的元素。请仔细阅读链接。
标签: java json spring spring-boot jackson