Я получаю JSON из веб-службы и не могу влиять на формат JSON. Приведенный ниже код JSON - это просто пример, иллюстрирующий проблему. Поле cars
может быть либо объектом, содержащим объекты Car
, либо пустой строкой. Если бы я мог изменить веб-службу, я бы изменил пустую строку на пустой объект, например "cars": {}
вместо "cars": ""
.
При попытке сопоставить JSON с этим объектом Java:
public class Person {
public int id;
public String name;
public Map<String, Car> cars;
}
Это работает:
{
"id" : "1234",
"name" : "John Doe",
"cars" : {
"Tesla Model S" : {
"color" : "silver",
"buying_date" : "2012-06-01"
},
"Toyota Yaris" : {
"color" : "blue",
"buying_date" : "2005-01-01"
}
}
}
И это не удается:
{
"id" : "1",
"name" : "The Dude",
"cars" : ""
}
Как лучше всего справиться с этим случаем в Джексоне? Если есть пустая строка, я бы хотел получить null
для поля cars
. Я пробовал использовать ACCEPT_EMPTY_STRING_AS_NULL_OBJECT
, но это не помогло.