请帮我拔掉头发。
使用 GSON 读取从我的 PHP Web 服务返回的 JSON 输入。
简化(测试)JSON 如下所示:
{"Posts":[{"post":{"Areaid":"1"}},{"post":{"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: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
我尝试了很多不同的方法,即 Map<String,List<Area>>
, List<Map<String,List<Area>>>
但我似乎无法正确映射 JSON 响应。
有什么帮助或建议吗?
最佳答案
看起来应该是Map<String,List<Map<String,Area>>>
,但我以前从未使用过 GSON :)
关于java - GSON JSON 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913252/