Ich verwende Jackson 2 Bibliothek deserialisieren und ich versuche, eine JSON-Antwort zu lesen, die wie folgt aussieht:Verwenden Jackson JSON-String oder ein Objekt in ein String-Feld
{ "value":"Hello" }
Wenn der Wert leer ist, JSON-Antwort aussehen wie:
{ "value":{} }
Mein Modell POJO Klasse wie dieses
public class Hello {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Das Problem sieht i s, dass, wenn Reaktion aussieht {Wert: {}}, Jackson, ein Objekt zu lesen versucht, aber mein Modell Klassenfeld ist ein String, so wirft es eine Ausnahme:
JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token.
Meine Frage ist, wie Jackson erfolgreich lesen JSONs, die wie folgt aussehen:
{"value":"something"}
und zugleich, wenn Reaktion dieser aussieht { „Wert“: {}} (leere Antwort für mich), übergeben zu Wertfeld meines Hallo Modellklasse null.
Ich verwende den Code unten, um JSON-String zu lesen:
String myJsonAsString = "{...}";
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(myJsonAsString , Hello.class);
Gibt es keine Möglichkeit, das Teil zu reparieren, das dieses JSON generiert, anstatt um dieses hässliche Design herum zu arbeiten? –
Nö gibt es leider nicht. API gehört nicht mir. Ich bin nur die Kundenseite. –
Autsch, die richtige Ausgabe würde das Feld auslassen oder auf Null setzen ... – john16384