GSON - convert JsonObject to java/Kotlin object using a map

Sayed Jalil Hassan :

I want to convert a jsonObject to an object using Gson. However the object doesn't have fixed keys for certain items.

{
  "hits": [],
  "target": {
    "geo": {
      "54.57982-24.41563": 891,
      "55.37717-25.30446": 725,
      "55.47091-25.31749": 569,
      "55.20887-25.05958": 514,
      "55.45714-25.29926": 494,
      "54.68297-24.34772": 406,
      "54.55594-24.33671": 314,
      "55.42375-25.22124": 295,
      "54.55434-24.33302": 277,
      "55.25917-25.11189": 266
    }
  }
}

The ge0 object, as you can see doesn't have fixed keys.

Santanu Sur :

U can replace it with a HashMap :-

data class Response(val hits: List<Any>, val target: Target) {
    data class Target(val geo: HashMap<String, Int>)
}

Then deserialize

val response: Response = gson.fromJson(jsonObjectInString.trim(), Response::class.java)

Then loop over the map :-

for((latLong, value) in response.target.geo) {
     // work with your keys and values
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=391483&siteId=1