一尘不染

Android JSon错误“预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY”

json

我从Web服务获取JSon数据,示例数据如下:

[
  {
    "SectionId": 1,
    "SectionName": "Android"
  }
]

当我尝试将其转换时,它将引发错误,我这样做是:

Data data = new Gson().fromJson(jsonDataFromWebService, Data.class);

我的班级是:

class Section
{
    public int SectionId;
    public String SectionName;
}

class Data {
    public List<Section> sections;
}

LogCat说:

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但在第1行第2列为BEGIN_ARRAY


阅读 194

收藏
2020-07-27

共1个答案

一尘不染

错误说明发生了什么问题…您返回的是数组而不是JSon对象

尝试如下:

JSONArray ja = new JSONArray(jsonStringReturnedByService);

Data sections = new Data();

for (int i = 0; i < ja.length(); i++) {
    Section s = new Section();
    JSONObject jsonSection = ja.getJSONObject(i);

    s.SectionId = Integer.ValueOf(jsonSection.getString("SectionId"));
    s.SectionName = jsonSection.getString("SectionName");

   //add it to sections list
   sections.add(s);
}

return sections;
2020-07-27