Как правильно обработать ответ 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 шт):

Автор решения: Andrew

Почему у вас в модели перед массивом стоит @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. Просьба это учитывать в дальнейших вопросах.

→ Ссылка