I am using wikipedia API whose response structure is as
{
"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
}
}
}
}
}
I am confused on how to use the pages object I currently have as
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
)
Any suggestions?
The query has a pages map inside
data class Query(
@SerializedName("pages")
val pages: Map<String, Page>
)
And your Pages
should actually be a single page
data class Page(
@SerializedName("pageid")...
@SerializedName("thumbnail")
val thumbnail: Thumbnail
)
This is one element on a map:
"28189": {...}
You can't know each key previously, so it is a map of String, Object
but you do know the object type which is a Page
So after that, you can pages.values()
and get a list of pages or anything you can do with a Map.