我在改造lib中使用模型类时遇到问题。后端侧字段名称已更改。
是否可以在没有模型类的情况下获得响应?
答案 0 :(得分:5)
是的,你可以。
@POST("url")
Call<JsonObject> register(@Query("name") String name,
@Query("password") String password);
根据您的响应而不是Model类来编写JsonArray或JsonObject。
然后,从JsonObject或JsonArray获取数据,如下所示:
Call<JsonObject> call = application.getServiceLink().register();
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
JsonObject object = response.body();
//parse object
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
}
});
答案 1 :(得分:4)
使用不同的返回值完全可能。我假设您当前使用Gson反序列化JSON响应,并将它们转换为实际的类。但是,您可以选择将返回的响应转换为JsonElement
(或更具体的JSON类),在这种情况下,您将获得一个可以根据需要操作的JSON项。类似的东西:
@GET("url")
Call<JsonElement> apiCall();
答案 2 :(得分:3)
@Vadivel这里是基于@chetan工作的GET版本:
@GET("http://your.api.url")
Call<JsonObject> getGenericJSON();
Call<JsonObject> call = api.getGenericJSON();
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
if (response.isSuccessful() && response.body() != null) {
Log.d(TAG, response.body().toString());
} else {
Log.e(TAG, "Error in getGenericJson:" + response.code() + " " + response.message());
}
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
Log.e(TAG, "Response Error");
}
});
答案 3 :(得分:2)
是否可以在没有模型类的情况下获得响应
如果我找对你 - 当然。您不必自动转换响应JSON。如果需要,您可以通过检索原始响应轻松地手动执行此操作。一旦你得到了,你可以做任何你需要的事情。
答案 4 :(得分:0)
你可以简单地重命名&#34;你身边的领域
@SerializedName("newFieldName")
SomeClass oldField;