Java 如何使用Gson将对象的JSON字符串转换为ArrayList?
因此,我有一个JSON国家字符串,如下所示: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"
{
"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;
}