2016-05-14 14 views
2

Ich verwende Retrofit-Bibliothek (Version 2.0.2 zum Zeitpunkt der Erstellung).Erhalten einzelner JSON-Eigenschaftswert aus Antwort JSON unter Verwendung von Retrofit 2

Ich mache einen GET-Aufruf an einen Dienst, der ein großes JSON-Objekt antwortet, aber ich bin nur an einem Schlüssel interessiert: Wertpaar darin.

Wie kann ich genau das bekommen, anstatt eine ganz neue POJO-Klasse zu schreiben, die der JSON-Antwort entspricht?

Beispiel -

{ 
    status_code: 34, 
    status_message: "The resource you requested could not be found.", 
    ..., 
    ... 
} 

Ich brauche nur den Statuscode-Wert (34 hier).

Bitte beachten Sie, ich gebe hier nur ein Beispiel für dieses JSON-Objekt. Der wirkliche, mit dem ich es zu tun habe, ist riesig und mir ist nur ein Schlüssel wichtig: ein Wertpaar darin.

Vielen Dank im Voraus.

Antwort

3

können Sie auf das verweisen folgende:

@GET("/files/jsonsample.json") 
Call<JsonObject> readJsonFromFileUri(); 

und

class MyStatus{ 
    int status_code; 
} 


... 
Retrofit retrofit2 = new Retrofit.Builder() 
     .baseUrl("http://...") 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 

WebAPIService apiService = retrofit2.create(WebAPIService.class); 
Call<JsonObject> jsonCall = apiService.readJsonFromFileUri(); 
jsonCall.enqueue(new Callback<JsonObject>() { 
    @Override 
    public void onResponse(Call<JsonObject> call, Response<JsonObject> response) { 
     String jsonString = response.body().toString(); 
     Gson gson = new Gson(); 
     MyStatus status = gson.fromJson(jsonString, MyStatus.class); 
     Log.i(LOG_TAG, String.valueOf(status.status_code));     
    } 

    @Override 
    public void onFailure(Call<JsonObject> call, Throwable t) { 
     Log.e(LOG_TAG, t.toString()); 
    } 
}); 
... 

Debug Screenshot

enter image description here

+0

So ist der Name der Eigenschaft in benutzerdefinierten Klasse (status_code in MyStatus hier) muss mit JSON-Schlüssel übereinstimmen? – kalehv

+0

Ja, willst du das nicht? – BNK

+0

Oh nein, ich bin cool mit jedem Namen, aber ich frage, ist dies eine Voraussetzung dafür, dass es funktioniert, so dass es weiß, welchen Schlüssel es braucht, um aus JSON zu extrahieren? – kalehv

Verwandte Themen