Я пытаюсь простой JSON для де-сериализации в java-объект. Однако я получаю пустые значения String для значений свойства java.lang.String
. В остальной части свойств пустые значения преобразуются в нулевые значения (это то, что я хочу).
Мой JSON и связанный с ним класс Java перечислены ниже.
Строка JSON:
{
"eventId" : 1,
"title" : "sample event",
"location" : ""
}
Класс EventBean POJO:
public class EventBean {
public Long eventId;
public String title;
public String location;
}
Мой основной код:
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);
}
Я ожидал печати "Это нуль". Вместо этого я получаю "Это". Очевидно, что Джексон не обрабатывает пустые значения String как NULL при преобразовании в мой тип объекта String.
Я где-то читал, что это ожидалось. Тем не менее, это то, чего я хочу избежать для java.lang.String тоже. Есть простой способ?