如何解析Retrofit JSON响应

时间:2015-10-26 05:20:16

标签: java android json android-activity retrofit

我有一个典型的Retrofit API请求:

RestAdapter restAdapter = new RestAdapter.Builder()
        .setEndpoint(URL)
        .build();

ApiEndpointInterface api = restAdapter.create(ApiEndpointInterface.class);

api.getToken('1', new Callback<DefaultResponse>() {
    @Override
    public void success(DefaultResponse json, Response response) {
        //
    }

    @Override
    public void failure(RetrofitError response) {
        //
    }
});

返回的JSON是:

{"success":true,"data":{"token_id":"pPt9AKl0Cg","token_key":"8ax224sFrJZZkStAQuER"}}

我如何解析这个JSON?在我的应用程序中为每个不同的响应创建一个新的模型类似乎是错误/乏味的。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:2)

你应该写下你的模型类

public class MyResponseModel {//write setters and getters.
        private boolean success;
        private DataModel data;

    public static class DataModel {
        private String token_id;
        private String token_key;
    }
}

现在,您的getToken()方法应该如下所示

getToken('1', Callback<MyResponseModel> response);

retrofit将解析响应并将其转换为上面的类。

答案 1 :(得分:0)

试试这段代码,

JsonElement je = new JsonParser().parse(s);
JsonObject asJsonObject = je.getAsJsonObject();
JsonElement get = asJsonObject.get("data");
System.out.println(s + "\n" + get);
JsonObject asJsonObject1 = get.getAsJsonObject();
JsonElement get1 = asJsonObject1.get("token_id");
System.out.println(get1);
JsonElement get2 = asJsonObject1.get("token_key");
System.out.println(get2);