Java 如何使用Gson将对象的JSON字符串转换为ArrayList?

Java 如何使用Gson将对象的JSON字符串转换为ArrayList?,java,json,list,arraylist,gson,Java,Json,List,Arraylist,Gson,因此,我有一个JSON国家字符串,如下所示: { "details": [ { "country_id": "1", "name": "Afghanistan", "regions": null }, { "country_id": "2", "name": "Albania", "regions": null }, { "country_id"

因此,我有一个JSON国家字符串,如下所示:

{
"details": [
    {
        "country_id": "1",
        "name": "Afghanistan",
        "regions": null
    },
    {
        "country_id": "2",
        "name": "Albania",
        "regions": null
    },
    {
        "country_id": "3",
        "name": "Algeria",
        "regions": null
    },

    ... and so on
}
现在我想有一个方法,尝试将其转换为国家的
ArrayList

public static ArrayList<GFSCountry> get() {
    return new Gson().fromJson(countriesJson,  new TypeToken<ArrayList<GFSCountry>>(){}.getType());
}
根据要求,这是我的
gfscontry
课程:

@SerializedName("country_id")
@Expose
private String countryId;
@SerializedName("name")
@Expose
private String name;
@SerializedName("regions")
@Expose
private Object regions;

public String getCountryId() {
    return countryId;
}

public void setCountryId(String countryId) {
    this.countryId = countryId;
}

public String getName() {
    return name;
}

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

public Object getRegions() {
    return regions;
}

public void setRegions(Object regions) {
    this.regions = regions;
}

我知道我应该调整JSON字符串或方法中的某些内容。有什么帮助吗?

在我看来,Gson希望您的json是这样的

 [
    {
        "country_id": "1",
        "name": "Afghanistan",
        "regions": null
    },
    {
        "country_id": "2",
        "name": "Albania",
        "regions": null
    },
    {
        "country_id": "3",
        "name": "Algeria",
        "regions": null
    },

    ... and so on
 ]
但是它遇到一个对象(用{}标记)


您可以更改json格式,或者创建一个带有“details”属性的类作为列表,以与json格式兼容。

由于列表嵌套在json中,因此您需要一个包含列表的小型映射类

试一试

静态类GFSControlList{
公开名单详情;
}
公共静态列表get(){
返回新的Gson().fromJson(countriesJson,gfscontryList.class);
}

请提供GFSContry类的代码。@SachinVarma添加了它,尽管它只是一个简单的数据类。我简直不敢相信我没有想到对
fromJson
的第二个参数使用映射类。谢谢
 [
    {
        "country_id": "1",
        "name": "Afghanistan",
        "regions": null
    },
    {
        "country_id": "2",
        "name": "Albania",
        "regions": null
    },
    {
        "country_id": "3",
        "name": "Algeria",
        "regions": null
    },

    ... and so on
 ]
static class GFSCountryList {
    public List<GFSCountry> details;
}

public static List<GFSCountry> get() {
    return new Gson().fromJson(countriesJson, GFSCountryList.class).details;
}