【问题标题】:Android parse json list with unknown attribute namesAndroid解析具有未知属性名称的json列表
【发布时间】:2019-10-17 13:43:48
【问题描述】:

我需要解析一个json结构如下:

{
    "names": {
        "nameOne": {
            "item": "my item"
        },
        "nameOther": {
            "item": "my item 2"
        },
        ... more elements with no prevously known attribute name
    }
}

如果我不知道存在多少个 nameOne、nameOther...nameX,我该如何检索它?我的问题是为那个 json 建模,所以我不能使用 SerializedName。我认为可能存在类似 hashmap 的东西来存储这些对象。

【问题讨论】:

    标签: android json parsing model gson


    【解决方案1】:

    这样使用

        @Expose
        @SerializedName("names")
        private HashMap<String, String> map;
    

    map 键将包含 'nameOne,........'

    使用 Gson 作为 json 解析

    【讨论】:

    • 谢谢,就是这样!!
    【解决方案2】:

    这不是有效的 JSON 结构。无论如何你可以检查这个

    How to parse JSON Array (Not Json Object) in Android

    对于解析 JSON 列表,列表中有多少元素并不重要。对列表元素执行简单的 for 循环,瞧。或者甚至更好地使用创建这样的东西来解析响应:

    public class Foo {
    private List<Names> objects;
    }
    

    你可以在这里使用可序列化

    【讨论】:

      【解决方案3】:

      您可以遍历 jsonObject 的键并将它们添加到地图中

      Object obj = new JSONParser().parse(new FileReader("JSONExample.json"));
      
      JSONObject jo = (JSONObject) obj;
      
      Iterator<String> keys = jo.keys();
      
      while(keys.hasNext()) {
          String key = keys.next();
          if (jo.get(key) instanceof JSONObject) {
                // do something with jsonObject here      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-11-09
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        相关资源
        最近更新 更多