Mit Bedingungen dynamisch ausschließen, POJO-Eigenschaft in Jackson json-Serialisierung

Habe ich eine Anforderung auf dynamisch ausschließen, bestimmte Eigenschaft innerhalb einer Liste von definierten POJO.
Die wichtigsten POJO serialisiert werden:

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 werden ignoriert, wenn ignoreId = true, etwa so:

[
    { "id": "1", "name": "one" },
    { "name": "two" }
    { "name": "three" }
    { "id": "4", "name": "four" }
]

Im moment, ich habe versucht mit JsonFilter und JacksonJsonViews aber konnte nicht die gewünschte Leistung.
Ich wäre froh, wenn alle Zeiger gegeben werden kann, die zur Erreichung dieses.

JsonFilter sollten in diesem Fall verwendet werden. Können Sie beschreiben, warum der Filter nicht funktioniert für Sie?
Ich erstellte eine Logik etwa so: @JsonFilter("Exclude.Id") class PropertyFilterMixIn {} Wenn ich Set<String> ignorableFieldNames = new ArrayList<String>().add("id"); ich tun kann: 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`, um die ignorableFieldNames[] wenn & nur wenn die ignoreId wahr ist

InformationsquelleAutor Damilola | 2014-09-01

Schreibe einen Kommentar