{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Wie kann ich den Schlüssel und den Wert jedes Artikels erhalten, ohne vorher den Schlüssel oder den Wert zu kennen?
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Wie kann ich den Schlüssel und den Wert jedes Artikels erhalten, ohne vorher den Schlüssel oder den Wert zu kennen?
Antworten:
Verwenden Sie den keys()
Iterator, um alle Eigenschaften zu durchlaufen, und rufen Sie get()
jede auf.
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
Kurzfassung von Francis Antwort:
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
Sie müssen ein verwenden Iterator
, um die Schlüssel zu durchlaufen, um ihre Werte zu erhalten.
Hier ist eine Kotlin-Implementierung. Sie werden feststellen, dass die Art und Weise, wie ich den String erhalten habe optString()
, einen String oder einen nullbaren Wert erwartet.
val keys = jsonObject.keys()
while (keys.hasNext()) {
val key = keys.next()
val value = targetJson.optString(key)
}
Sie sollten die Methode keys()
oder names()
verwenden. keys()
Sie erhalten einen Iterator, der alle String-Eigenschaftsnamen im Objekt enthält, während names()
Sie ein Array aller wichtigen String-Namen erhalten.
Die JSONObject-Dokumentation finden Sie hier
http://developer.android.com/reference/org/json/JSONObject.html
Schauen Sie sich die JSONObject-Referenz an:
http://www.json.org/javadoc/org/json/JSONObject.html
Ohne das Objekt tatsächlich zu verwenden, sieht es so aus, als ob Sie entweder getNames () oder keys () verwenden, die einen Iterator zurückgeben.
JSONObject
in Android hat nicht getNames()
. developer.android.com/reference/org/json/JSONObject.html