Json反序列化包含300个以上类的文件

问题描述 投票:0回答:2

我正在使用Retrofit2创建一个应用程序,该应用程序从api读取许多国家的一些信息。我可以使用该插件基于json文件自动创建类,但它会生成类似350+数据类的内容。我可以用其他方式吗?还是需要一定数量的课程?

Json包含“国家”节点,该节点有350多个乡村孩子,例如“阿富汗”,“玻利维亚”等

android json api kotlin retrofit2
2个回答
0
投票

您必须更改API响应的结构,该API响应将每个国家/地区的信息作为JSONArray对象而不是JSONObject(将密钥设置为国家/地区名称)发送。

像这样:

[
      {
           name : "Afganistan",
           people : 12334,
           ...
      },
      ...,
 ]

0
投票

如果所有国家/地区都使用相同的数据表示形式,那么您可以创建一个类,其中包含所有信息:

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
© www.soinside.com 2019 - 2024. All rights reserved.