[英]How to set field name in Gson, if it comes as value?
我有下一个杰森:
{
"Regions": [
{
"Id": "NA",
"Label": "North America"
},
{
"Id": "EUR",
"Label": "Europe"
},
{
"Id": "ASIA",
"Label": "Asia"
},
{
"Id": "AUS",
"Label": "Australia"
}
],
"Stations": {
"EUR": [
"Kiyv",
"Astana"
],
"NA": [
"Kosovo"
]
}
}
如您所见,“ Stations
部分中的键名与“ Regions
部分中每个项目的值相同。
我的POJO课程
public class Provisions {
@SerializedName("Regions")
public List<Region> regions;
@SerializedName("Stations")
public List<Station> stations;
}
public class Region {
@SerializedName("Id")
public String id;
@SerializedName("Label")
public String label;
}
public class Station {
// what should be put here?
}
我的问题是:如何以更优雅的方式声明POJO,以使我的生活更轻松:例如:如果后端添加新的Region和Station,我将不希望修改POJO-所有操作都会自动解析。
也许可以通过泛型完成?
重新定义您的Provisions类,如下所示:
public class Provisions {
@SerializedName("Regions")
private List<Region> regions;
@SerializedName("Stations")
private Map<String, List<String>> stations;
}
然后,您可以使用类似于以下代码的反序列化:
Gson gson = new GsonBuilder().create();
Provisions provisions = gson.fromJson(JSON_VALUE, Provisions.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.