如何处理可能不同的响应键入Retrofit 2

时间:2016-09-02 08:16:20

标签: android json retrofit2

在WebApi中,返回的JSON字段可以是不同的类:

{ someField:"some string" }
{ someField: { "en" : "some string", "ka" : "რამე სტრინგი" } }

我见过一些解决方案,但它是在以前版本的Retrofit上。

我的pojo类怎么样,我可以用什么来解析这个动态的json?

1 个答案:

答案 0 :(得分:1)

对于您的情况,您可以使用Call<JsonElement>作为响应类型并在响应中进行解析:

call.enqueue(new Callback<JsonElement>() {
        @Override
        public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
            if(response.isSuccessful()){
                JsonElement jsonElement = response.body();
                if(jsonElement.isJsonObject()){
                    JsonObject objectWhichYouNeed = jsonElement.getAsJsonObject();
                } 
                // or you can use jsonElement.getAsJsonArray() method
                //use any json deserializer to convert to your class.
            }
            else{
                System.out.println(response.message());
            }
        }
        @Override
        public void onFailure(Call<JsonElement> call, Throwable t) {
            System.out.println("Failed");
        }
    });