我从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
错误说明发生了什么问题…您返回的是数组而不是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;