Android разбирает список json с неизвестными именами атрибутов - PullRequest
0 голосов
/ 17 октября 2019

Мне нужно проанализировать json со структурой следующим образом:

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

Как я могу получить его, если не знаю, сколько существует nameOne, nameOther ... nameX? Моя проблема состоит в том, чтобы смоделировать этот json, поэтому я не могу использовать SerializedName. Я думаю, что может существовать что-то вроде хэш-карты для хранения этих объектов.

Ответы [ 3 ]

1 голос
/ 17 октября 2019

используйте вот так

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

ключ карты будет содержать 'nameOne, .......'

использовать Gson для анализа json

0 голосов
/ 17 октября 2019

вы можете перебирать ключи 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      
    }
}
0 голосов
/ 17 октября 2019

Это недопустимая структура JSON. В любом случае вы можете проверить это

Как проанализировать массив JSON (не объект Json) в Android

для анализа списка JSON, не важно, сколько элементов будет всписок. Сделайте простой цикл по элементам списка и вуаля. Или даже лучше использовать create что-то вроде этого для разбора ответа:

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

, и вы можете использовать сериализуемый здесь

...