2016-12-19 5 views
0

Jackson hat die @JsonIgnoreProperties Annotation auf Feldebene, die ist toll, aber manchmal kann es groß sein.Gibt es etwas wie @JsonIgnoreOtherProperties?

@JsonIgnoreProperties({ "name", "phone", ... "20th item"}) 
private User user; 

Ich bin auf der Suche nach so etwas wie:

@JsonIgnoreOtherProperties("email") 
private User user; 

Also das alle Felder, aber E-Mail ignorieren würde.

Gibt es etwas wie @JsonIgnoreOtherProperties?

Antwort

0

Ich glaube nicht, dass existiert, aber es gibt mehrere Möglichkeiten zu erreichen, was Sie wollen (andere als Ihre bestehende Lösung):

1) Mit @JsonView (http://wiki.fasterxml.com/JacksonJsonViews). Ein Beispiel finden Sie in What is the JSON View class in Jackson and how does it work?.

2) Erstellen einer anderen User Ansicht, die einen minimalen Satz von Feldern enthält, vielleicht UserMinimal. Es kann von einer allgemeinen Schnittstelle als Ihre andere User Ansicht erben, um zu zeigen, dass sie wirklich dieselbe Entität darstellen.

3) Den Objekt-Mapper anpassen und einen Filter verwenden. Ein Beispiel finden Sie in How do I exclude fields with Jackson not using annotations?.

Persönlich bevorzuge ich die erste Lösung, wenn Sie einen einfachen Anwendungsfall haben und die zweite, wenn Sie eine komplexere haben. Ich mag die dritte Option nicht, da ich glaube, dass das Anpassen von Objektmappern nach meiner Erfahrung einen fehleranfälligen Pfad nach unten führt.

Ihre Anmerkung Idee klingt aber interessant. Ich würde es als eine Feature-Anfrage setzen (ich denke, es würde gehen https://github.com/FasterXML/jackson-annotations/issues).