簡體   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