使用gson解析键值对类型数据结构

时间:2016-01-26 14:31:13

标签: java android gson

我正在尝试使用gson库解析以下响应:

{
    "successful": true,
    "resultObject": {
        "areas": {
            "New york": [{
                "id": 1,
                "name": "Some area 1 in NY"
            }, {
                "id": 2,
                "name": "Some area 2 in NY"
            }, {
                "id": 3,
                "name": "Some area 3 in NY"
            }],
            "San Fransisco": [{
                "id": 1,
                "name": "Some area 1 in SF"
            }, {
                "id": 2,
                "name": "Some area 2 in SF"
            }, {
                "id": 3,
                "name": "Some area 3 in SF"
            }],
            "New Jersey": [{
                "id": 1,
                "name": "Some area 1 in NJ"
            }, {
                "id": 2,
                "name": "Some area 2 in NJ"
            }, {
                "id": 3,
                "name": "Some area 3 in NJ"
            }]
        }
    }
}

我正在尝试使用

Pair<String, City[]>[] cities;

解析区域键但每次都为空。 City类的Java代码:

public class City {
        private String id;

        private String name;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "ClassPojo [id = " + id + ", name = " + name + "]";
        }
    }

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

如果需要解析整个json,我建议您使用自定义类,如下所示:

public class GsonContainer{
    public boolean successful;

    public ResultObject resultObject;

    public static class ResultObject{
        public Map<String, List<City>> areas;
    }
}//end class

如果它只是区域下的json,请使用Map<String,List<City>>代替。