0

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.

2 Answers 2

1

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
}
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks. This is exactly what I was looking for. Had defined my objects incorrectly.
1

Try below it will help you

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...

    }

1 Comment

Thanks. I was looking for a way to do it through Gson

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.