【问题标题】:I am not able to deserialize my json response in listview我无法在 listview 中反序列化我的 json 响应
【发布时间】:2019-11-06 20:09:07
【问题描述】:

这是我班级的代码,它在“resp”中获取 json 响应。

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;

}

【问题讨论】:

    标签: arrays json serialization soap gson


    【解决方案1】:

    您正试图反序列化供体对象的数组,而不仅仅是单个对象。因此,您需要正确指定类型:

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

    我还强烈考虑适当地命名您的类和变量,即ClassObj 可以是Donorobjects 可以是donors

    【讨论】:

    • 谢谢@Klaycon,但仍然收到 gson 错误:"{serializeNulls : false, factory:[Factory[typeHierarchy = com.google.gson.JsonElement, adapter = com.google.gson. internal.bind.TypeAdapter$29@5be63b6],....]
    • 请在另一个问题@sumbul khan 中发布完整的错误和上下文
    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 2018-10-18
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多