Как правильно обработать ответ Json?
введите сюда кодВот то что отправляю на сервер :
"device_id":"a40d38a959f1ca65"
Вот ответ который должен быть:
"personnel":[
{
"personnel_number":444,
"first_name":"Иван",
"last_name":"mts",
"middle_name":"",
"id":1012651
},
{
"personnel_number":777,
"first_name":"Василий",
"last_name":"mts1",
"middle_name":"",
"id":1012652
}
],
"success":true
List<Post> posts = Collections.singletonList(response.body());
Iterator itr = posts.iterator();
while(itr.hasNext()) {
post = (Post) itr.next();
Log.e("asd", "yes " + post.getId());
}
Ответы (1 шт):
Почему у вас в модели перед массивом стоит @SerializedName("personnel_number")? брать из json список с таким ключем не получится поэтому и null я думаю, так же вам стоит учитывать что в массиве есть объекты, которые вы не обрабатываете никак. По логике вам нужно что-то типа такого:
class PersonnelArray{
@SerializedName("personnel")
private List<PersonnelValue> personnels;
public List<PersonnelValue> getPersonnels() {
return personnels;
}
}
и модель человека:
class PersonnelValue{
@SerializedName("personnel_number")
@Expose
private String perNum;
....
public void setPersonnelNumber(Integer personnelNumber) {
this.personnelNumber = personnelNumber;
}
public Integer getPersonnelNumber() {
return personnelNumber;
}
}
а вы все поля впихнули в один класс-модель, что немного противоречит вашему json. Дальше вы сможете получить список и пройтись по нему в цикле. Вот есть хороший туториал по работе с json массивами надеюсь пригодится.
UPDATE
Вот например как пройтись циклом:
List myEmpls = new ArrayList();
Iterator itr = myEmpls.iterator();
while(itr.hasNext()) {
PersonnelValue pobj = (PersonnelValue) itr.next();
System.out.println(pobj .getPersonnelNumber());
}
P.S. Метка android-studio должна использоваться в вопросах связанных непосредственно с IDE. Просьба это учитывать в дальнейших вопросах.