Desserialização do GSON com tipos genéricos e nomes de campos genéricos
Digamos que tenhamos uma estrutura como esta:
JSON:
{
"body": {
"cats": [{
"cat": {
"id": 1,
"title": "cat1"
}
}, {
"cat": {
"id": 2,
"title": "cat2"
}
}]
}
}
E POJO correspondente:
Response.class
private final Body body;
Body.class
private final Collection<CatWrapper> cats
CatWrapper.class
private final Cat cat
Cat.class
private final int id;
private final String title;
Mas digamos que agora temos a mesma estrutura, mas em vez deCat
nós recebemostruck
{
"body": {
"trucks": [{
"truck": {
"id": 1,
"engine": "big",
"wheels" : 12
}
}, {
"truck": {
"id": 2,
"engine": "super big",
"wheels" : 128
}
}]
}
}
Estou usando o GSON (padrãoRetrofit
analisador json) emAndroid
, considere isso enquanto fornece soluções.
Poderíamos usar genéricos aqui para que a resposta se parecesse com:
private final Body<ListResponse<ItemWrapper<T>>
mas não podemos, pois os nomes dos campos são específicos de uma classe.
PERGUNTA, QUESTÃO:
O que posso fazer para serializá-lo automaticamente, sem criar tantas classes padrão? Eu realmente não preciso de aulas separadas comoBodyCat
, BodyTruck
, BodyAnyOtherClassInThisStructure
e estou procurando uma maneira de evitar tê-los.
@EDITAR:
Eu mudei de classe (gato, cachorro -> gato, caminhão) devido à confusão de herança, as classes usadas aqui como exemplo NÃO se estendem