我需要帮助才能脱掉头发。
使用GSON读取从我的PHP Web服务返回的JSON输入。
简化(测试)JSON看起来像:
{ “信息”:[{ “后”:{ “areaID表示”: “1”}},{ “后”:{ “areaID表示”: “2”}}]}
代码看起来像这样:
public void viewAreas() throws Exception {
List<Map<String, Area>> map=viewAreaResponseToMap("{\"Posts\":[{\"post\":{\"Areaid\":\"1\"}},{\"post\":{\"Areaid\":\"2\"}}]}");
for (Map<String, Area> map1 : map) {
for (Map.Entry<String, Area> entry : map1.entrySet()) {
String string = entry.getKey();
System.out.println(string);
Area list = entry.getValue();
System.out.println(list.Areaid);
}
}
}
private List<Map<String, Area>> viewAreaResponseToMap(String response) throws Exception {
List<Map<String, Area>> map = new Gson().fromJson(response, new TypeToken<List<Map<String, Area>>>() {
}.getType());
return map;
}
使用Area类,如:
public class Area {
public String Areaid;
}
然而,当我致电viewAreas()
时,我得到了:
java.lang.IllegalStateException:预期BEGIN_ARRAY但是 BEGIN_OBJECT在第1行第2列
我尝试了许多不同的方式,例如Map<String,List<Area>>
,List<Map<String,List<Area>>>
,但我似乎无法正确映射JSON响应。
任何帮助或建议?
答案 0 :(得分:2)
看起来应该是Map<String,List<Map<String,Area>>>
,但我之前从未使用过GSON:)