У меня есть требование динамически исключать определенное свойство из списка определенного POJO. Основной 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 = true, например:
[
{ "id": "1", "name": "one" },
{ "name": "two" }
{ "name": "three" }
{ "id": "4", "name": "four" }
]
На данный момент я пытался использовать JsonFilter
и JacksonJsonViews
, но не смог получить требуемый результат. Я был бы рад, если бы какой-либо указатель можно было дать для достижения этого.
@JsonFilter("Exclude.Id") class PropertyFilterMixIn {}
Если у меня естьSet<String> ignorableFieldNames = new ArrayList<String>().add("id");
, я могу сделать:FilterProvider filters = new SimpleFilterProvider().addFilter("Exclude.Id", SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames)); ObjectWriter writer = mapper.writer(filters); System.out.println(writer.writeValueAsString(new Foo())); my challenge's to dynamically add
id` дляignorableFieldNames[]
, если и только еслиignoreId
верно - person Damilola   schedule 01.09.2014