Jackson JSON-generator erzeugt null JSON-Werte für fehlende Objekte
Habe ich angefangen mit Jackson als JSON-generator, eine alternative zu google-GSON. Ich habe laufen in ein Problem, wo Jackson ist die Generierung Objekt: null, wenn das Objekt tatsächlich null. GSON auf der anderen Seite erzeugt KEINEN Eintrag in der JSON, das ist das Verhalten was ich will. Gibt es eine Möglichkeit zu stoppen Jackson von der Generierung von null-Objekt/- Wert, wenn ein Objekt fehlt?
Jackson
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, some_complex_object);
String jackson = sw.getBuffer().toString();
System.out.println("********************* START JACKSON JSON ****************************");
System.out.println(jackson);
System.out.println("********************* END JACKSON JSON ****************************");
generiert diese:
{"eatwithrustyspoon":{"urlList":null,"device":"iPad","os":"iPhone OS","peer_id":
und GSON sieht wie folgt aus:
Gson gson = new Gson();
String json = gson.toJson(some_complex_object);
System.out.println("********************* START GSON JSON ****************************");
System.out.println(json);
System.out.println("********************* END GSON JSON ****************************");
und es erzeugt (das ist das, was ich will - beachten Sie, dass "urlList":null wurde nicht erzeugt) :
{"eatwithrustyspoon":{"device":"iPad","os":"iPhone OS","peer_id"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Jackson FAQ:
Kann ich weglassen, das schreiben von Bean-Eigenschaften mit dem Wert null? ("wie Sie verhindern, dass das schreiben der null-Eigenschaften", "how to suppress null values")
Ja. Als pro JacksonAnnotationSerializeNulls, die Sie verwenden können:
- und voila, nicht mehr null-Werte. Beachten Sie, dass Sie konfigurieren MÜSSEN, mapper, bevor beans serialisiert werden, da diese Einstellung zwischengespeichert werden kann zusammen mit serialisierungsprogramme. So setzen Sie es zu spät, können verhindern, dass Wechsel von der Einnahme-Effekt.
meine Frage war bisschen anders, eigentlich war ich immer Null-Werte für die Eigenschaften der POJO-Klasse.
jedoch habe ich das problem gelöst, indem die Zuordnung zu Eigenschaften, die in meinem pojo-Klasse wie folgt aus :
@JsonProperty("PROPERTY_NAME")
dachte, es kann jemand helfen 🙂
Folgende Lösung hat mich gerettet.