Android JSONObject - मैं प्रत्येक कुंजी और मान प्राप्त करने के लिए फ्लैट JSON ऑब्जेक्ट के माध्यम से कैसे लूप कर सकता हूं


103
{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

मैं पहले से ही बिना कुंजी और मूल्य को जाने बिना प्रत्येक आइटम की कुंजी और मूल्य कैसे प्राप्त कर सकता हूं?


जवाबों:


313

keys()सभी गुणों पर पुनरावृति करने के लिए पुनरावृत्ति का उपयोग करें , और get()प्रत्येक के लिए कॉल करें ।

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
नोट: आप के लिए संक्षिप्त रूप का उपयोग नहीं कर सकते हैं (स्ट्रिंग s: json.keys ()) {...} यह एक वास्तविक शर्म है कि न तो JSONArray और न ही JSONObject चलने योग्य हैं। :-(
टू-रिइंस्टेट मोनिका-डोर डुह

यहाँ json क्या है? Json ऑब्जेक्ट, Json एरे या कुछ और?
प्रवीनसिंह वाघेला

2
@PravinsinghWaghela यह एक JSONObject है जैसा कि प्रश्न में निर्दिष्ट है
निकोलस

66

Franci के उत्तर का लघु संस्करण:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}

यहाँ json क्या है? Json ऑब्जेक्ट, Json एरे या कुछ और?
प्रवीणसिंह वाघेला

json है JsonObject
Roozbeh Zabihollahi

@PravinsinghWaghela बहुत यकीन है कि ओपी ने पूछा कि एक वस्तु के माध्यम से लूप कैसे करें।
डेनी

5

आपको एक का उपयोग करने की आवश्यकता होगी Iterator उनके मान प्राप्त करने के लिए कुंजियों के माध्यम से लूप ।

यहाँ एक कोटलिन कार्यान्वयन है, आपको एहसास होगा कि जिस तरह से मुझे स्ट्रिंग मिला है वह उपयोग कर रहा है optString(), जो स्ट्रिंग या अशक्त मूल्य की उम्मीद कर रहा है।

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}

3

आप keys()या तो names()विधि या विधि का उपयोग करते हैं । keys()आपको ऑब्जेक्ट में सभी स्ट्रिंग प्रॉपर्टी के नाम वाला एक इटरेटर names()देगा, जबकि आपको सभी प्रमुख स्ट्रिंग नामों की एक सरणी देगा।

आप यहाँ JSONObject प्रलेखन प्राप्त कर सकते हैं

http://developer.android.com/reference/org/json/JSONObject.html


-2

JSONObject संदर्भ पर एक नज़र डालें:

http://www.json.org/javadoc/org/json/JSONObject.html

वास्तव में वस्तु का उपयोग किए बिना, यह getNames () या कुंजियों () का उपयोग करने जैसा दिखता है जो एक Iterator देता है जो जाने का रास्ता है।


1
गलत लिंक। JSONObjectएंड्रॉयड में नहीं है getNames()developer.android.com/reference/org/json/JSONObject.html
वीटु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.