【问题标题】:Is there a way to name each JSONObject in an array?有没有办法在数组中命名每个 JSONObject?
【发布时间】:2018-05-18 05:56:53
【问题描述】:
{
  "Object1": {
    "description": "An object",
    "data": "more data"
  },
  "Object2": {
    "description": "An object",
    "data": "more data"
  }
}

我将如何使用 GSON 迭代此 JSON 对象中的元素以轻松地逐个解析每个元素?

【问题讨论】:

    标签: java json gson


    【解决方案1】:

    是的,但是 PrabhakarP 是对的,JSON 中的关联数组是对象。所以在你的情况下,

    {
      "Object1": {
        "description": "An object",
        "data": "more data"
      }
    }
    

    您将拥有一个包含每个数组元素作为属性的元对象,这实际上没有意义。你应该以不同的方式解析它。

    但如果你仍然需要,在 GSON 中,然后尝试,

     JsonArray body = gson.fromJson(yourString, JsonArray.class);
            JSONObject metaObj = new JSONObject();  
    
            for (JsonElement currEle : paymentsArray) {
                JSONObject currObj = currEle.getAsJsonObject();
                String nameVal = currObj.get("name");
                currObj.remove("name");
                metaObj.addProperty(nameVal, currObj);
            }
    

    【讨论】:

      【解决方案2】:

      我建议你为数组中的每个对象添加一个属性并使用它

      【讨论】:

        【解决方案3】:

        我查看了手册页,发现我可以遍历对象中的成员集。

        JsonObject obj = gson.fromJson(jsonFile, JsonObject.class);
        for(Map.Entry<String, JsonElement> element : obj.entrySet()) {
            Object obj = gson.fromJson(element.getValue(), Object.class);
            // do stuff with the object
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-12-02
          • 2021-09-30
          • 1970-01-01
          • 1970-01-01
          • 2022-01-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多