¿Convertir la respuesta JSON a POJO con Retrofit usando el formato JSend?
Tengo que trabajar con una API que usandoJSend formato.
En pocas palabras, está utilizando códigos de estado HTTP que indican un estado como:
200 es el éxito406 no está autorizadoLo cual es bueno porque puedo determinar a partir de esto si mi solicitud de API es exitosa o no.
PERO:
Como el formato JSend tiene su propia cosa, TAMBIÉN tiene un pequeño indicador de estado en la respuesta como este:
{
status : "success",
data : { "post" : { "id" : 2, "title" : "Another blog post", "body" : "More content" }}
}
Por lo tanto, tiene un campo de 'estado' que TAMBIÉN muestra si la solicitud de API es exitosa o no.
PROBLEMA:
Modificación realizada para analizar la respuesta a POJO para que asuma que las respuestas contienen SOLO el Modelo y no indicadores para el éxito, como por ejemplo: (Una instancia posterior al Modelo)
{ "id" : 2, "title" : "Another blog post", "body" : "More content" }
Mi pregunta es:
¿Existe alguna solucion para esto? ¿Puedo analizar previamente los indicadores de estado, dividir la parte de 'datos' (Modelo) de la respuesta y asignarla a la modificación para analizar solo esa parte?
Si no, tendría que agregar un atributo de "estado" a cada uno de mis modelos, lo que claramente no es una manera transitable, no lo haré.
¿Debo seguir con el análisis y uso manual?ResponseBody
en lugar de mis modelos en
void onResponse(Call<T> call, Response<T> response);
paraT
tipo de parámetro?
Porque de esa manera puedo usar.string()
y convertir la cadena a JSON y después de eso puedo analizar mis modelos manualmente como escribir el analizador para ellos.
Realmente me gustaría usar la función Retrofit para el análisis automático porque conJSend Simplemente no puedo imaginar cómo podría hacerse esto correctamente si de todos modos.
No puedo cambiar la API, será así.