Mapa un campo JSON que puede tener diferentes tipos con Jackson?
Obtengo JSON de un servicio web y no puedo influir en el formato JSON. El código JSON a continuación es solo un ejemplo para ilustrar el problema. El campocars
puede ser un objeto que contengaCar
objetos o puede ser una cadena vacía. Si pudiera cambiar el servicio web, cambiaría la cadena vacía para que sea un objeto vacío como"cars" : {}
en lugar de"cars" : ""
.
Cuando intente asignar JSON a este objeto Java:
public class Person {
public int id;
public String name;
public Map<String, Car> cars;
}
Esto funciona
{
"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"
}
}
}
Y esto falla:
{
"id" : "1",
"name" : "The Dude",
"cars" : ""
}
¿Cuál sería la mejor manera de manejar este caso en Jackson? Si hay una cadena vacía, me gustaría obtenernull
para el campocars
. Intenté usarACCEPT_EMPTY_STRING_AS_NULL_OBJECT
, pero no ayudó.