-1

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?

WISHY
  • 11,067
  • 25
  • 105
  • 197

1 Answers1

1

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.

cutiko
  • 9,887
  • 3
  • 45
  • 59