GSON - конвертировать JsonObject в объект java / Kotlin, используя карту - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу преобразовать jsonObject в объект, используя Gson. Однако у объекта нет фиксированных ключей для определенных предметов.

{
  "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
    }
  }
}

У объекта ge0, как вы можете видеть, нет фиксированных ключей.

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

U можно заменить на HashMap: -

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

Затем десериализовать

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

Затем l oop по карте: -

for((latLong, value) in response.target.geo) {
     // work with your keys and values
}
1 голос
/ 02 апреля 2020

Попробуйте ниже, это поможет вам

JSONObject data = jsonResponse.getJSONObject("geo");// here response is server response
    Iterator keys = data.keys();

    while(keys.hasNext()) {
        // loop to get the dynamic key
        String key = (String)keys.next();  // it returns a key 

        // get the value of the dynamic key
        int value = data.getInt(key);      // it returns a value like 891,725 etc...

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...