【问题标题】:Gson lib parsing error Expected BEGIN_OBJECT but was BEGIN_ARRAYGson lib 解析错误应为 BEGIN_OBJECT 但为 BEGIN_ARRAY
【发布时间】:2015-01-01 11:22:48
【问题描述】:

Gson 解析低于 JSON 时出现错误

11-05 15:34:00.882: W/System.err(28673): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 5923 列是 BEGIN_ARRAY

 {
  "lab": [
    [
      {
        "id": "147",
        "messagelab_id": "test",
        "patientlab_ic": "abc",
        "patientlab_name": "some text"

      }
    ]
  ]
}

我在上面的 JSON 中使用了下面的模型类

public class ScreeningResults implements Serializable{

    private Labs lab;
    //@SerializedName("all_results")
    //private List<LabResult> labResults;

    public Labs getLab() {
        return lab;
    }
    public void setLab(Labs lab) {
        this.lab = lab;
    }


}


public class Labs implements Serializable{

 private List<Lab> lab;

public List<Lab> getLab() {
    return lab;
}

public void setLab(List<Lab> lab) {
    this.lab = lab;
}


}

我正在使用 belo 行来解析 JSON 以上的序列化

Gson gson = new Gson();
  ScreeningResults screeningResults=gson.fromJson(response.toString(),ScreeningResults.class);

【问题讨论】:

  • 您的 json 无效,请将 "some text", 替换为 "some text"
  • 已编辑假设 JSON 有效
  • 因为你的 json 结构是这样的“实验室”: [ [ 所以它必须是 List>
  • 除了列表,它还应该对Lab[][] 感到满意。当你说Labs lab 时,如果寻找"lab" : { /* content defined in Labs class */ },即一个对象
  • @zap1 我已更改为私有列表> 实验室;不是它的工作

标签: android json parsing gson


【解决方案1】:

JSON 包含一个二维数组。因此,您应该将其解析为 List&lt;List&lt;Lab&gt;&gt;,而不是 List&lt;Lab&gt;

【讨论】:

【解决方案2】:

这是上面 JSON 的工作域类

@SuppressWarnings("serial")
public class ScreeningResults implements Serializable{

//private Labs lab;
private List<List<Lab>> lab;


public List<List<Lab>> getLab() {
    return lab;
}

public void setLab(List<List<Lab>> lab) {
    this.lab = lab;
}

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多