GSON JSON映射

时间:2014-01-03 21:46:44

标签: java json gson

我需要帮助才能脱掉头发。

使用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响应。

任何帮助或建议?

1 个答案:

答案 0 :(得分:2)

看起来应该是Map<String,List<Map<String,Area>>>,但我之前从未使用过GSON:)