Есть ли способ назвать каждый JSONObject в массиве? - PullRequest
0 голосов
/ 18 мая 2018
{
  "Object1": {
    "description": "An object",
    "data": "more data"
  },
  "Object2": {
    "description": "An object",
    "data": "more data"
  }
}

Как бы я использовал GSON для перебора элементов в этом объекте JSON, чтобы легко анализировать каждый элемент один за другим?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Я бы предложил вам добавить свойство к каждому объекту в массиве и использовать его

0 голосов
/ 24 мая 2018

Я посмотрел на справочную страницу и обнаружил, что могу перебрать набор элементов в объекте.

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
}
0 голосов
/ 18 мая 2018

Да, есть, но 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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...