Вот моя строка JSON, которую я использую в Java:
json =
[
{"id":"123456","Data":"skill2","dmlcrud":false},
{"id":"123456","Data":"skill3","dmlcrud":true},
{"id":"123456","Data":"skill14","dmlcrud":true},
{"id":"123321","Data":"skill1","dmlcrud":false},
{"id":"123321","Data":"skill14","dmlcrud":false}
]
Теперь я хочу поместить его в коллекцию, поэтому в идеале / теоретически я бы хотел сделать:
List<Person> personList = new Gson().fromJson(json, Person.class);
и personList.size () будет = 5. Затем я перебираю personList и выполняю свои соответствующие действия.
Однако я понимаю, что мне нужно создать контейнерный класс, который сам содержит список лиц? Так что вместо (публичные геттеры / сеттеры удалены для краткости, возможно, там также есть ошибка синтаксиса).
Class Person {
private integer id;
private String Data;
private Boolean dmlCrud ;
}
Мне на самом деле нужно что-то вроде?
Class container{
List<Person> personList;
static class Person {
private integer id;
private String Data;
private Boolean dmlCrud ;
}
}
Однако тогда мне нужно было бы изменить javascript json, чтобы он тоже отличался? Что кажется довольно проблематичным, так как я создаю строку json из массива javascript, используя JSON.stringifier.
Любая помощь с благодарностью получена.
EDIT
решение, которое я использовал, было добавить
public List<Person> personList;
на человека класс
и измените объект json так, чтобы он был
{ "personList" :
[
{"id":"123456","Data":"skill2","dmlcrud":false},
{"id":"123456","Data":"skill3","dmlcrud":true},
{"id":"123456","Data":"skill14","dmlcrud":true},
{"id":"123321","Data":"skill1","dmlcrud":false},
{"id":"123321","Data":"skill14","dmlcrud":false}
]
}
тогда вызов gson может быть
Person person = new Gson().fromJson(json, Person.class);
и данные, доступные в списке, например
List<Person> personList = person.getPersonList();
РЕДАКТИРОВАТЬ 2
Второе, лучшее решение - использовать этот массив json
[
{"id":"123456","Data":"skill2","dmlcrud":false},
{"id":"123456","Data":"skill3","dmlcrud":true},
{"id":"123456","Data":"skill14","dmlcrud":true},
{"id":"123321","Data":"skill1","dmlcrud":false},
{"id":"123321","Data":"skill14","dmlcrud":false}
]
и затем используйте
Type listType = new TypeToken<List<SkillsGsonTO>>() {}.getType();
List<Person> personList = new Gson().fromJson(json,listType);
Person person1 = personList.get(0);
где используется оригинальный класс
Class Person {
private integer id;
private String Data;
private Boolean dmlCrud ;
}