eine JSON-mapped Klasse wie folgt gegeben:Wie kann Jackson @JSONView korrekt verwendet werden, um bestimmte Eigenschaften von der Standardserialisierung auszuschließen?
public class Person {
@JsonProperty
String getName() { ... }
@JsonProperty @JsonView(SpecialView.class)
String getId() { ... }
}
ich nur die name
Eigenschaft enthalten müssen, wenn wenn (keine Aussicht angegeben dh) unter Verwendung von „normalen“ Serialisierung und umfassen sowohl Eigenschaften, wenn SpecialView
mit Serialisierung. Aber wenn ich
objectMapper.writeValueAsString(object)
(dh die Angabe nicht jede Ansicht), die id
Eigenschaft ist im Preis inbegriffen.
Wenn ich
objectMapper..writerWithView(Object.class).writeValueAsString(object)
dann verhält es sich wie erwartet. Problem ist, ich kontrolliere nicht den ganzen Code, der Serialisierung durchführt, also kann ich es nicht alles zwingen, eine Ansicht zu spezifizieren.
Wenn ich durch den Jackson-Quellcode (v 2.5.4) trat, ich sehe, dass com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields()
nicht die _filteredProps
nicht verwendet, wenn es keine „aktive Ansicht“ ist:
if (_filteredProps != null && provider.getActiveView() != null) {
props = _filteredProps;
} else {
props = _props;
}
Es scheint seltsam, dass Serialisierung würde nicht respektieren @JsonView
, wenn keine Ansicht angegeben ist. Fehle ich etwas?
Gibt es eine Möglichkeit zu erreichen, was ich will?
Dies wäre eine gute Lösung sein, aber wie ich in der Frage, sagte Ich kontrolliere nicht den Code, der den 'ObjectMapper' erstellt und konfiguriert –