是否可以在没有模型类的情况下使用改造?

时间:2016-11-09 09:16:03

标签: java android retrofit retrofit2

我在改造lib中使用模型类时遇到问题。后端侧字段名称已更改。

是否可以在没有模型类的情况下获得响应?

5 个答案:

答案 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;