繁体   English   中英

使用具有相同字段名称的对象的Gson解析json

[英]parsing json using Gson which has objects with same field name

我有一个具有以下结构的json文件:

{
"Otions": true
"Plastic": ""
"Houses": {
   7: {
   "name": "Akash Bhawan"
   "MemBers": 3
   "children": 1
   }-
   8: {
   "name": "Ashiyana"
   "memBers": 4
   "children": 2
   }-
   9: {
  "name": "Faruks Nest"
  "memBers": 5
  "children": 1
  }-

房屋内部的对象是可变的,可以相应地增加或减少,也可以更改名称。 异域“名称”,“成员”,“子代”是仅有的字段,并且始终存在

我正在使用gson进行解析

@SerializedName("Otions")
private String Options;
@SerializedName("Plastic")
private String plastics;
@SerializedName("Houses")
private Houses houses;

我想知道是否可以通过散列表或其他方式存储名称不同的对象?

如果无法更改结构,则必须将房屋作为int Hashmapobject 例如:-

HashMap<int, Object> House;

该对象将具有名称,成员,详细信息等元素。

房屋应该是这样的地图。

私人HashMap房屋。

由于3:表示索引结构。 Gson将根据需要创建嵌套对象。

请把“房子”做成一堆数组而不是对象。

{
    "Options": true,
    "Plastics": "",
    "house": [{
        "name": "Akash Bhawan",
        "MemBers": 3,
        "children": 1
    }, {
        "name": "Ashiyana",
        "memBers": 4,
        "children": 2
    }, {
        "name": "Faruks Nest",
        "memBers": 5,
        "children": 1
    }]
}

您应该执行以下操作(如我的评论中所述):

JSONObject jsonHouses = jsonObject.getJSONObject("Houses");
Iterator<String> keys = jsonHouses.keys(); //this will be array of "7", "8", "9"

if (keys.hasNext()) {
    JSONObject singleHouseObject = jsonHouses.getJSONObject(keys.next());
    //now do whatever you want to do with singleHouseObject.
    //this is the object which has "name", "MemBers", "children"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM