¿Cómo manejar los parámetros que pueden ser un ARRAY o un OBJETO en Retrofit en Android?
Tengo un problema en el que la API que estoy analizando devuelve un OBJETO para un ARRAY de tamaño 1.
Por ejemplo, a veces la API responderá con:
{
"monument": [
{
"key": 4152,
"name": "MTS - Corporate Head Office",
"categories": {},
"address": {}
},
{
"key": 4151,
"name": "Canadian Transportation Agency",
"categories": {},
"address": {}
},
{
"key": 4153,
"name": "Bank of Montreal Building",
"categories": {},
"address": {}
}
],
}
Sin embargo, si elmonument
La matriz tiene solo 1 elemento, se convierte en un OBJETO (tenga en cuenta la falta de[]
paréntesis) así:
{
"monument": {
"key": 4152,
"name": "MTS - Corporate Head Office",
"categories": {},
"address": {}
}
}
Si defino mis modelos de esta manera, obtendré un error cuando solo se devuelva un único elemento:
public class Locations {
public List<Monument> monument;
}
Si solo se devuelve un solo artículo, aparece el siguiente error:
Expected BEGIN_OBJECT but was BEGIN_ARRAY ...
Y si defino mi modelo así:
public class Locations {
public Monument monument;
}
y la API devuelve un ARRAY obtengo el error opuesto
Expected BEGIN_ARRAY but was BEGIN_OBJECT ...
No puedo definir varios elementos con el mismo nombre en mi modelo. ¿Cómo puedo manejar este caso?
Nota: No puedo hacer cambios en la API.