gson解析不返回正确的对象

时间:2012-07-24 21:55:23

标签: android json gson

尝试在我的Android应用程序中使用gson解析以下json但是givien它的结构无法解决它。

JSON

[
{
    "city": {
        "country": "Canada",
        "id": 1,
        "name": "Toronto",
        "province": "Ontario"
    }
},
{
    "city": {
        "country": "Canada",
        "id": 11,
        "name": "Ajax",
        "province": "Ontario"
    }
}
]

JAVA

public class LocationCityList {

    private List<LocationCityContainer> cities;


    public List<LocationCityContainer> getTrends() {
        return cities;
    }
    public void setTrends(List<LocationCityContainer> cities) {
        this.cities = cities;
    }

}

以下返回一个适当长度的数组但在此之后我无法弄清楚如何自己获取城市对象。

Gson gson = new Gson();
Reader r = new InputStreamReader(getJSONData(url));       
LocationCityList[] objs = gson.fromJson(r, LocationCityList[].class);

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

太多逗号。试试这个json(注意我在安大略省后删除了逗号):

[
{
    "city": {
        "country": "Canada",
        "id": 1,
        "name": "Toronto",
        "province": "Ontario"
    }
},
{
    "city": {
        "country": "Canada",
        "id": 11,
        "name": "Ajax",
        "province": "Ontario"
    }
}

我发现有json问题通过验证器运行我的json是有益的。 http://jsonlint.com/是一个很好的资源。

答案 1 :(得分:0)

好的想通了。 Java代码需要如下所示。

public class LocationCityList {

LocationCity city;

public LocationCity getLocationCity(){
    return city;
}   

}

public class LocationCity {
private String name;
private String id;

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

}