Próbuję prosty json, aby odseparować do obiektu java. Jednak otrzymuję puste wartości ciągów dla wartości właściwości java.lang.String. W pozostałych właściwościach puste wartości są przekształcane na wartości null (co jest tym, czego chcę).jak deserializować pustą wartość łańcucha json na wartość null dla java.lang.String
mój Json i klasy Java są wymienione poniżej:
ciąg JSON:
{
"eventId" : 1,
"title" : "sample event",
"location" : ""
}
kod Java:
EventBean klasa Pojo:
public class EventBean {
public Long eventId;
public String title;
public String location;
}
Główny kod klasy:
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);
Spodziewałem się wydruku "Is is null". Zamiast tego otrzymuję "To jest". Oczywiście, jackson nie traktuje pustych wartości String jako Null podczas konwersji do mojego typu obiektu java.lang.String. Czytałem gdzieś, że się tego oczekuje. Jednak jest to coś, czego chcę uniknąć również dla java.lang.String. czy istnieje prosty sposób?
dzięki Sachin. To powinno działać. – Mayur
To działało również dla mnie, ale używanie readValueAsTree() zawijało łańcuch w dodatkowe cudzysłowy. Aby tego uniknąć użyłem zamiast niego jsonParser.readValueAs (String.class); – kopelitsa
Problem z dodatkowymi cudzysłowami @kopelitsa może zostać rozwiązany przez "return node.asText();" – gce