Como lidar com o JSON dinâmico no Retrofit?
Estou usando um retrofit eficiente de uma biblioteca de rede, mas não consegui lidar com o JSON dinâmico que contém prefixo únicoresponseMessage
que muda paraobject
aleatoriamente, o mesmo prefixo (responseMessage
) muda para String em alguns casos (dinamicamente).
Formato Json Objeto de resposta
{
"applicationType":"1",
"responseMessage":{
"surname":"Jhon",
"forename":" taylor",
"dob":"17081990",
"refNo":"3394909238490F",
"result":"Received"
}
}
responseMessage
O formato Json muda dinamicamente para o tipo string:
{
"applicationType":"4",
"responseMessage":"Success"
}
O problema para mim é que o retrofit foi incorporadoJSON
análise, temos que atribuir um único POJO por solicitação! infelizmente, a API REST é construída com dinâmicasJSON
respostas, o prefixo muda para string para objeto aleatoriamente em ambossucesso(...) efalha(...) métodos!
void doTrackRef(Map<String, String> paramsref2) {
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint("http://192.168.100.44/RestDemo").build();
TrackerRefRequest userref = restAdapter.create(TrackerRefRequest.class);
userref.login(paramsref2,
new Callback<TrackerRefResponse>() {
@Override
public void success(
TrackerRefResponse trackdetailresponse,
Response response) {
Toast.makeText(TrackerActivity.this, "Success",
Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError retrofitError) {
Toast.makeText(TrackerActivity.this, "No internet",
Toast.LENGTH_SHORT).show();
}
});
}
Pojo:
public class TrackerRefResponse {
private String applicationType;
private String responseMessage; //String type
//private ResponseMessage responseMessage; //Object of type ResponseMessage
//Setters and Getters
}
No código acima, o prefixo POJO TrackerRefResponse.java responseMessage é definido como string ou objeto do tipo responseMessage, para que possamos criar o POJO com a variável ref com o mesmo nome (noções básicas de java :)), então estou procurando a mesma solução para dinâmicoJSON
em Retrofit. Sei que esse é um trabalho muito fácil em clientes http normais com tarefa assíncrona, mas não é a melhor prática no REST-ApiJSON
análise! olhando para o desempenhoBenchmarks sempre Volley ou Retrofit é a melhor escolha, mas não consigo lidar com dinâmicoJSON
!
Possível solução que eu conheço
Use a tarefa assíncrona antiga com a análise do cliente http. :(
Tente convencer o desenvolvedor de back-end do RESTapi.
Crie um cliente Retrofit personalizado :)