Reputation: 2595
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.
Upvotes: 0
Views: 763
Reputation: 11477
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
}
Upvotes: 1
Reputation: 6622
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...
}
Upvotes: 1