Muszę obsłużyć dynamiczne odpowiedzi JSON.Niestandardowy konwerter dla Retrofit 2
Wcześniej używałem klasy i adnotacje w następujący sposób:
public class ChatResponse {
@SerializedName("status")
private int status;
@SerializedName("error")
private String error;
@SerializedName("response")
private Talk response;
public int getStatus() {
return status;
}
public String getError() {
return error;
}
public Talk getResponse() {
return response;
}
}
Gdy stan jest 1 (sukces) onResponse
wypala i mogę uzyskać obiekt ChatResponse. Jednak, gdy status wynosi 0, odpowiedź jest nieprawidłowa w reprezentacji JSON i nie powiedzie się (onFailure
jest uruchamiany).
Chcę utworzyć mój własny konwerter i this question ma dobry przykład, ale ten przykład jest dla Retrofit 1.
I have to utworzyć klasę, która rozciąga Converter.Factory
, ale nie wiem, w jaki sposób zastąpić metody tej klasy.
Właściwie mam następny:
@Override
public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {
return super.fromResponseBody(type, annotations);
}
@Override
public Converter<?, RequestBody> toRequestBody(Type type, Annotation[] annotations) {
return super.toRequestBody(type, annotations);
}
Jak mogę analizować odpowiedzi JSON przez mój własny w tym momencie?
Z góry dziękuję.
byłoby to dodać statyczną fabrykę Converter dla samego typu odpowiedzi. Co się stanie, jeśli chcę, aby parsowanie różnych obiektów odpowiedzi było opcjonalne? Mogłem mieć różne odpowiedzi dla różnych apisów z opcjami i stałymi obiektami odpowiedzi. –