简体   繁体   English

GSON JSON映射

[英]GSON JSON Mapping

Please I need help about to pull my hair out. 我需要帮助才能拔掉头发。

Using GSON to read JSON input returned from my PHP web service. 使用GSON读取从我的PHP Web服务返回的JSON输入。

simplified (test) JSON looks like: 简化(测试)JSON看起来像:

{"Posts":[{"post":{"Areaid":"1"}},{"post":{"Areaid":"2"}}]} { “信息”:[{ “后”:{ “areaID表示”: “1”}},{ “后”:{ “areaID表示”: “2”}}]}

Code look like this: 代码看起来像这样:

 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;
    }

with the Area class like: 与Area类一样:

public class Area {
    public String Areaid;
}

However when I call viewAreas() I get: 但是,当我调用viewAreas()我得到:

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 java.lang.IllegalStateException:预期BEGIN_ARRAY但在第1行第2列是BEGIN_OBJECT

I have tried many different ways ie Map<String,List<Area>> , List<Map<String,List<Area>>> but I just cant seem to map the JSON response correctly. 我尝试了很多不同的方法,即Map<String,List<Area>>List<Map<String,List<Area>>>但我似乎无法正确映射JSON响应。

Any help or advice? 任何帮助或建议?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM