使用翻新将动态JSON解析为POJO [英] Parsing dynamic JSON to POJO with Retrofit
本文介绍了使用翻新将动态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.
我将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屋!
查看全文