Reputation: 1163
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
How I can get each item's key and value without knowing the key nor value beforehand?
Upvotes: 115
Views: 118480
Reputation: 2465
You'll need to use an Iterator
to loop through the keys to get their values.
Here's a Kotlin implementation, you will realised that the way I got the string is using optString()
, which is expecting a String or a nullable value.
val keys = jsonObject.keys()
while (keys.hasNext()) {
val key = keys.next()
val value = targetJson.optString(key)
}
Upvotes: 10
Reputation: 7347
Short version of Franci's answer:
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
Upvotes: 69
Reputation: 76011
Use the keys()
iterator to iterate over all the properties, and call get()
for each.
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
Upvotes: 328
Reputation: 71422
You shold use the keys()
or names()
method. keys()
will give you an iterator containing all the String property names in the object while names()
will give you an array of all key String names.
You can get the JSONObject documentation here
http://developer.android.com/reference/org/json/JSONObject.html
Upvotes: 3
Reputation: 3063
Take a look at the JSONObject reference:
http://www.json.org/javadoc/org/json/JSONObject.html
Without actually using the object, it looks like using either getNames() or keys() which returns an Iterator is the way to go.
Upvotes: -2