我有一個要求來動態地排除定義的POJO列表中的某個屬性。 主要POJO要序列是:使用條件來動態地排除Jackson json序列化中的POJO屬性
public class Foo
{
List<Bar> bar;
public void setBar(List<Bar> bar)
{
this.bar = bar;
}
public List<Bar> getBar()
{
return this.bar;
}
public static class Bar
{
private int id;
private boolean ignoreId;
private String name;
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public void setIgnoreId(boolean ignoreId)
{
this.ignoreId = ignoreId;
}
public boolean isIgnoreId()
{
return this.ignoreId;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
}
ID是被忽略的,如果ignoreId =真,就像這樣:
[
{ "id": "1", "name": "one" },
{ "name": "two" }
{ "name": "three" }
{ "id": "4", "name": "four" }
]
此刻,我一直在使用JsonFilter
和JacksonJsonViews
嘗試,但couldn」 t獲得所需的輸出。 我會很高興,如果任何指針可以實現這一目標。
應該在這種情況下使用JsonFilter。你能否描述爲什麼過濾器不適合你? – 2014-09-01 12:03:06
@AlexeyGavrilov,我創建像這樣一個邏輯: '@JsonFilter( 「Exclude.Id」) 類PropertyFilterMixIn {}' 如果我已經'設置 ignorableFieldNames =新的ArrayList ()。新增( 「ID」 );' 我可以這樣做: 'FilterProvider filters = new SimpleFilterProvider()。addFilter(「Exclude.Id」,SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames)); ObjectWriter writer = mapper.writer(filters); System.out.println(writer.writeValueAsString(new Foo())); 我的挑戰是動態地將'id'添加到'ignorableFieldNames []'當且僅當'ignoreId'爲真 –
Damilola
2014-09-01 14:24:26