Android JSONObject - Làm cách nào để tôi có thể lặp qua một đối tượng JSON phẳng để nhận từng khóa và giá trị


Câu trả lời:


313

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!
    }
}

7
Lưu ý: Bạn không thể sử dụng biểu mẫu rút gọn cho (String s: json.keys ()) {...} Thật tiếc là cả JSONArray và JSONObject đều không thể lặp lại. :-(
tu-Reinstate Monica-dor duh

json ở đây là gì? Json Object, Json Array hay anthing khác?
Pravinsingh Waghela

2
@PravinsinghWaghela nó là một JSONObject như được chỉ định trong câu hỏi
Nicolás Carrasco

66

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();
    ...
}

json ở đây là gì? Json Object, Json Array hay anthing khác?
Pravinsingh Waghela

json là JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela khá chắc chắn rằng OP đã hỏi cách lặp qua một đối tượng json.
Denny

5

Bạn sẽ cần sử dụng một Iteratorvò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)        
}

3

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


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.