Convertendo resposta JSON para POJO com Retrofit usando o formato JSend?
Eu tenho que trabalhar com uma API que usandoJSend formato.
Para encurtar a história, ele está usando códigos de status HTTP que indicam status como:
200 é sucesso406 não é autorizadoO que é bom porque posso determinar com isso se minha solicitação de API é bem-sucedida ou não.
MAS:
Como o formato JSend possui suas próprias características, também possui um pequeno indicador de status na resposta, assim:
{
status : "success",
data : { "post" : { "id" : 2, "title" : "Another blog post", "body" : "More content" }}
}
Portanto, ele possui um campo 'status' que TAMBÉM mostra se a solicitação da API é bem-sucedida ou não.
PROBLEMA:
Retrofit feito para analisar a resposta ao POJO, assumindo que as respostas contenham APENAS o Modelo e nenhum indicador de sucesso, assim como por exemplo: (Uma instância posterior ao Modelo)
{ "id" : 2, "title" : "Another blog post", "body" : "More content" }
Minha pergunta é:
Existe uma solução para isso? Posso pré-analisar os indicadores de status, dividir a parte 'dados' (Modelo) da resposta e permitir que ela seja adaptada para analisar apenas essa parte?
Caso contrário, eu teria que adicionar um atributo "status" a cada um dos meus modelos, o que claramente não é uma maneira fácil de percorrer, não o farei.
Devo ficar com a análise manual e usarResponseBody
em vez dos meus modelos em
void onResponse(Call<T> call, Response<T> response);
paraT
digite paramter?
Porque dessa maneira eu posso usar.string()
e converta a string em JSON e, depois disso, posso analisar meus modelos manualmente, como escrever o analisador para eles.
Eu realmente gostaria de usar o recurso Retrofit para análise automática, porque comJSend Eu simplesmente não consigo imaginar como isso poderia ser feito corretamente, de alguma maneira.
Não posso mudar a API, será assim.