使用翻新将动态JSON解析为POJO [英] Parsing dynamic JSON to POJO with Retrofit

查看:105
本文介绍了使用翻新将动态JSON解析为POJO的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有json,其中包含一些动态字段名称:

Hi I have json which has some dynamic field names:

{
"status": {
    "rcode": 200,
    "message": "OK"
},
"data": {
    "0": {
        "SubFranchiseID": "0",
        "OutletID": "607",
        "OutletName": "Spill "
    },
    "1": {
        "SubFranchiseID": "0",
        "OutletID": "32",
        "OutletName": "PizzaRoma"
    }
},
"hash": "b262c62ea3c8c693ad35210289a487d6963434d7"

}

"0"和"1"是动态字符串值.

"0" and "1" are dynamic String values.

从此处如何使用Gson注释解析动态列表?

我将Data类创建为:

I created my Data class as :

public class Data {

   public Map<String, Restaurant> restaurants = new HashMap<>();;

   public Map<String, Restaurant> getRestaurants() {
      return restaurants;
   }
}

但是当我在Retrofit中使用getRestaurants().size()时,我得到的值为零.

But I am getting zero value when i use getRestaurants().size() in Retrofit.

应如何更改我的数据类?

How should change my Data class ?

我的主要班级:

public class MyClass{

private Status status;
private Data data;
private String hash;

public Data getData() {
    return data;
}
// other getter and setters
}

Retrofit和RxJava:

Retrofit and RxJava :

RetrofitService service1 = ServiceFactory.createRetrofitService(RetrofitService.class, RetrofitService.API_ENDPOINT);
    service1.data()
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<MyClass>() {

                @Override
                public final void onNext(MyClass response) {

                    if(response.getData().getRestaurants().size() == 0)
                        Log.d("1", "size is ZERO ");

                }
            });

推荐答案

解决方案是不使用Data类,而是将MyClass更改为:

The solution was to not use the Data class , instead I changed my MyClass as:

public class MyClass{

private Status status;

@SerializedName("data")
private Map<String, Restaurant> data;

private String hash;

public Map<String, Restaurant> getData() {
    return data;
}
// other getter and setters
}

这篇关于使用翻新将动态JSON解析为POJO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆