{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Làm cách nào tôi có thể lấy khóa và giá trị của từng mục mà không cần biết trước khóa và giá trị?
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Làm cách nào tôi có thể lấy khóa và giá trị của từng mục mà không cần biết trước khóa và giá trị?
Câu trả lời:
Sử dụng keys()
trình vòng lặp để lặp qua tất cả các thuộc tính và gọi get()
từng thuộc tính .
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
Phiên bản ngắn của câu trả lời của Franci:
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
Bạn sẽ cần sử dụng một Iterator
vòng lặp qua các khóa để nhận giá trị của chúng.
Đây là cách triển khai Kotlin, bạn sẽ nhận ra rằng cách tôi lấy chuỗi đang sử dụng optString()
, mong đợi một chuỗi hoặc giá trị nullable.
val keys = jsonObject.keys()
while (keys.hasNext()) {
val key = keys.next()
val value = targetJson.optString(key)
}
Bạn sử dụng keys()
hoặc names()
phương pháp. keys()
sẽ cung cấp cho bạn một trình vòng lặp chứa tất cả các tên thuộc tính Chuỗi trong đối tượng trong khi names()
sẽ cung cấp cho bạn một mảng tất cả các tên Chuỗi chính.
Bạn có thể lấy tài liệu JSONObject tại đây
http://developer.android.com/reference/org/json/JSONObject.html
Hãy xem tham chiếu JSONObject:
http://www.json.org/javadoc/org/json/JSONObject.html
Nếu không thực sự sử dụng đối tượng, có vẻ như sử dụng getNames () hoặc các khóa () trả về một Iterator là cách để thực hiện.
JSONObject
Android không có getNames()
. developer.android.com/reference/org/json/JSONObject.html