使用 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 对象的魔力。
我必须从服务器发出获取请求,它会提供大量信息。从我的搜索结果来看,我似乎只能使用模型 类 来做到这一点。事情是为了涵盖服务器发送给我的所有响应,我必须制作 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())
我建议使用 GsonConverterFactory
。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
您可以使用 this tool 根据 json 响应的架构创建 json 对象。使用这些工具,您可以尽情享受将 JSON 转换为 Java 对象的魔力。