Я не могу десериализовать свой JSON-ответ в виде списка - PullRequest
0 голосов
/ 06 ноября 2019

Это мой код моего класса, который получает ответ json в "resp".

public class Caller extends  Thread {

    public CallSoap cs;
    public String resp, Blood_Group, City;
    ClassObj object;
    Gson gson = new GsonBuilder().create();

    public  void run() {

        try {
            cs = new CallSoap();
            resp = cs.CallGetDonorList(Blood_Group, City);

            object = gson.fromJson(resp,ClassObj.class);

            int a = 0;

        }catch(Exception ex)
        {
            MainActivity.rslt=ex.toString();
        }
    }

}

resp имеет значение, подобное этому:

[{
  "Donor_Id":1,
  "Donor_Name":"Rakesh",
  "Donor_ContactNo":9044234578,
  "Blood_Group":"A+",
  "City":"Lucknow"},
  {....}
]

, и я создал класссериализовать эти значения как:

import com.google.gson.annotations.SerializedName;

public class ClassObj {

    @SerializedName("Donor_Id")
    private int Donor_Id;

    @SerializedName("Donor_Name")
    private String Donor_Name;

    @SerializedName("Donor_ContactNo")
    private String Donor_ContactNo;

    @SerializedName("Blood_Group")
    private String Blood_Group;

    @SerializedName("City")
    private String City;

}

1 Ответ

0 голосов
/ 07 ноября 2019

Вы пытаетесь десериализовать массив донорских объектов, а не только один. Таким образом, вам нужно будет правильно указать тип:

//declaration
ClassObj[] objects;

//deserialization
objects = gson.fromJson(resp,ClassObj[].class);

Я бы также настоятельно рекомендовал присваивать имена вашим классам и переменным соответствующим образом, то есть ClassObj может быть Donor, а objects может быть donors.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...