Jackson Unterschiedlichen JSONFilter gleichen Klasse
Ich versuche, mit verschiedenen JsonFilters zur Serialisierung von Objekten der gleichen Klasse.
Vorstellen, Klasse Foo
public class Foo{
Bar p1;
Bar p2;
}
und Klasse Bar
@JsonFilter("myFilter")
public class Bar{
String prop1;
String prop2;
String prop3;
}
Nun was ich erreichen will ist, verschiedene JsonFilters für die Variablen p1 und p2 in der Klasse Foo.
Zum Beispiel. für p1 habe ich serialisieren möchten nur prop1, und für die p2, die ich serialisieren möchten prop2 und prop3.
Um das folgende json -
{
"p1": { "prop1":"blabla" }
"p2": { "prop2":"blabla", "prop3":"blabla" }
}
Also ich würde verwenden Sie die folgenden filter, so dass nur "prop1" bekommen würde serialisiert:
FilterProvider filter = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop1"));
String json = new ObjectMapper().filteredWriter(filter).writeValueAsString(foo)
Aber mit dieser würde auch dazu führen, p2 serialisiert werden nur prop1
Ich würde gerne erstellen Sie einen weiteren filter für p2 etwa so:
FilterProvider filter2 = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop2","prop3"));
Aber ich kann wirklich nicht finden, wie es zu implementieren, so dass es gibt verschiedene Filter für p1 und p2 zu sehen, dass Sie der gleichen Klasse Foo.
Danke für das Lesen, ich hoffe, mir kann jemand helfen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ab Jackson 2.3 die
@JsonFilter
annotation kann auf die Felder und Methode. Ich denke, es sollte in Ihrem Fall helfen. Hier ist ein Beispiel:Ausgabe: