API 响应结构的数据 class?

Data class for API response structure?

我正在使用维基百科API,其响应结构如下

{
"batchcomplete": "",
"continue": {
"gpsoffset": 10,
"continue": "gpsoffset||"
  },
  "query": {
"pages": {
  "27667": {
    "pageid": 27667,
    "ns": 0,
    "title": "Space",
    "index": 1,
    "thumbnail": {
      "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/3D_coordinate_system.svg/200px-3D_coordinate_system.svg.png",
      "width": 200,
      "height": 200
    }
  },
  "28189": {
    "pageid": 28189,
    "ns": 0,
    "title": "Space Shuttle",
    "index": 8,
    "thumbnail": {
      "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/STS120LaunchHiRes-edit1.jpg/128px-STS120LaunchHiRes-edit1.jpg",
      "width": 128,
      "height": 200
    }
  },
  "28758": {
    "pageid": 28758,
    "ns": 0,
    "title": "Spacetime",
    "index": 5,
    "thumbnail": {
      "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/GPB_circling_earth.jpg/200px-GPB_circling_earth.jpg",
      "width": 200,
      "height": 150
    }
  }
}
  }
}

我对如何使用页面对象感到困惑 我目前有

data class APIResult(
@SerializedName("query")
val query: Query
)

data class Query(
@SerializedName("pages")
val pages: Pages
)

data class Pages(
@SerializedName("thumbnail")
val thumbnail: Thumbnail
)

data class Thumbnail(
@SerializedName("source")
val source: String
)

有什么建议吗?

查询中有一个页面映射

data class Query(
    @SerializedName("pages")
    val pages: Map<String, Page>
)

而您的 Pages 实际上应该是一个页面

data class Page(
    @SerializedName("pageid")...
    @SerializedName("thumbnail")
    val thumbnail: Thumbnail
)

这是地图上的一个元素:

"28189": {...}

你之前无法知道每个键,所以它是 String, Object 的映射,但你知道对象类型是 Page

所以在那之后,您可以 pages.values() 并获取页面列表或您可以使用地图执行的任何操作。