使用 JSONObject 调用改造。

Call retrofit with JSONObject.

我必须从服务器发出获取请求,它会提供大量信息。从我的搜索结果来看,我似乎只能使用模型 类 来做到这一点。事情是为了涵盖服务器发送给我的所有响应,我必须制作 53 模型 类 来存储信息。

我想知道有没有更简单的方法,比如把信息存储在JSON什么的。

我正在使用 Retrofit 和 OKHttp。

getTimeSessionsCall.enqueue(new Callback<JSONObject>() {
        @Override
        public void onResponse(Call<JSONObject> call, Response<JSONObject> response) {

            Log.i("getTimeSessions",Integer.toString(response.code()));

        }

        @Override
        public void onFailure(Call<JSONObject> call, Throwable t) {

        }
    });

我试过这种调用,它什么也没有存储。代码为 200,但 JSON 仍为空。

提前致谢!

JSONObject 为空的原因是 Retrofit 不知道如何解析您的响应。您可以做的是将响应作为字符串获取,然后从中构造一个 JsonObject。为此,您需要使用 ScalarConvertorsFactory 并且您的方法看起来像

getTimeSessionsCall.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {

           // Get the string and convert to JSONObject

        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {

        }
    });

别忘了加

compile 'com.squareup.retrofit2:converter-scalars:2.1.0' 并在使用 addConvertorFactory(ScalarsConvertorFactory.create())

构建 Retrofit 实例时添加转换器工厂

我建议使用 GsonConverterFactory

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

您可以使用 this tool 根据 json 响应的架构创建 json 对象。使用这些工具,您可以尽情享受将 JSON 转换为 Java 对象的魔力。