我正在使用Retrofit2创建一个应用程序,该应用程序从api读取许多国家的一些信息。我可以使用该插件基于json文件自动创建类,但它会生成类似350+数据类的内容。我可以用其他方式吗?还是需要一定数量的课程?
Json包含“国家”节点,该节点有350多个乡村孩子,例如“阿富汗”,“玻利维亚”等
您必须更改API响应的结构,该API响应将每个国家/地区的信息作为JSONArray对象而不是JSONObject(将密钥设置为国家/地区名称)发送。
像这样:
[
{
name : "Afganistan",
people : 12334,
...
},
...,
]
如果所有国家/地区都使用相同的数据表示形式,那么您可以创建一个类,其中包含所有信息:
class Country(val countryName: String, val prop: String, val otherprop: OtherType, ...)
fun JSONObject.toCountryWith(name: String) =
Country(name, getString["prop"], ...)
您可以首先创建json的JSONObject,然后对其进行迭代以创建Country列表:
val list = mutableListOf<Country>()
JSONObject(yourJsonString).apply {
for(key in keys()) {
list.add(getJsonObject(key).toCountryWith(key))
}
}
// list is ready with objects of Country