使用Retrofit 2

时间:2016-05-14 01:39:11

标签: android json retrofit2

我正在使用Retrofit库(撰写本文时的版本2.0.2)。

我正在对一个响应大型JSON对象的服务进行GET调用,但我只对其中的一个键:值对感兴趣。

我怎样才能获得而不是编写一个与JSON响应相匹配的全新POJO类?

示例 -

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

我只需要状态代码值(此处为34)。

请注意,我只是在这里给出一个这个JSON对象的例子。我正在处理的真实的是巨大的,我只关心一个关键:价值对。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您可以参考以下内容:

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

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());
    }
});
...

调试截图

enter image description here