Ich versuche eine einfache JSON in Java-Objekt zu deserialisieren. Ich bekomme jedoch String-Werte für java.lang.String-Eigenschaftswerte leer. In den restlichen Eigenschaften werden leere Werte in Nullwerte umgewandelt (was ich möchte).wie ein deserialize eine leere JSON Zeichenfolge Wert auf null für java.lang.String
meine Json und Java-Klasse sind im Folgenden aufgeführt:
Json string:
{
"eventId" : 1,
"title" : "sample event",
"location" : ""
}
Java-Code:
EventBean Klasse Pojo:
public class EventBean {
public Long eventId;
public String title;
public String location;
}
Mein Hauptklassencode:
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
try {
File file = new File(JsonTest.class.getClassLoader().getResource("event.txt").getFile());
JsonNode root = mapper.readTree(file);
// find out the applicationId
EventBean e = mapper.treeToValue(root, EventBean.class);
System.out.println("it is"+ e.location);
Ich erwartete Druck "Is is null". Stattdessen bekomme ich "Es ist". Offensichtlich behandelt jackson keine leeren String-Werte als Null während der Konvertierung in meinen java.lang.String-Objekttyp. Ich habe irgendwo gelesen, dass es erwartet wird. Das möchte ich aber auch für java.lang.String vermeiden. Gibt es einen einfachen Weg?
danke Sachin. Das sollte funktionieren. – Mayur
Das funktionierte auch für mich, aber mit readValueAsTree() wurde die Zeichenfolge in zusätzliche Anführungszeichen eingeschlossen. Um es zu vermeiden, habe ich stattdessen jsonParser.readValueAs (String.class); – kopelitsa
@kopelitsa zusätzliche Anführungszeichen Problem konnte behoben werden durch "return node.asText();" – gce