Como lidar com parâmetros que podem ser ARRAY ou OBJECT no Retrofit no Android?
Estou tendo um problema em que a API que estou analisando retorna um OBJECT para uma ARRAY do tamanho 1.
Por exemplo, às vezes a API responde com:
{
"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": {}
}
],
}
No entanto, se omonument
matriz possui apenas 1 item, torna-se um OBJETO (observe a falta de[]
colchetes) assim:
{
"monument": {
"key": 4152,
"name": "MTS - Corporate Head Office",
"categories": {},
"address": {}
}
}
Se eu definir meus modelos assim, receberei um erro quando apenas um único item for retornado:
public class Locations {
public List<Monument> monument;
}
Se apenas um único item for retornado, eu recebo o seguinte erro:
Expected BEGIN_OBJECT but was BEGIN_ARRAY ...
E se eu definir meu modelo assim:
public class Locations {
public Monument monument;
}
e a API retorna um ARRAY, recebo o erro oposto
Expected BEGIN_ARRAY but was BEGIN_OBJECT ...
Não consigo definir vários itens com o mesmo nome no meu modelo. Como posso lidar com este caso?
Nota: Não consigo fazer alterações na API.