2011-09-08 25 views
5

के लिए JSonArray अनुकूलित करें आज, मैं android developer documentation के संबंध में अपने JSONArray को अनुकूलित करने का प्रयास कर रहा हूं। मुझे इसे अनुकूलित करना था, लेकिन त्रुटि संदेश आ रहा है।लूप

JSONArray infojson = json.getJSONArray("getInfo");   
for(int i=0;i < infojson.length();i++){          
    JSONObject e = infojson.getJSONObject(i); 
    hm = new HashMap<String, Object>(); 
    hm.put(MYNAME, e.getString("uname")); 
    hm.put(MYAGE, e.getString("uage")); 
} 

और मैं कोडिंग ऊपर अनुकूलित किया है

JSONArray infojson = jsonObject.getJSONArray("getInfo"); 
for (Object o : infojson) { 
    JSONObject jsonLineItem = (JSONObject) o; 
    String myname = jsonLineItem.getString("uname"); 
    String myage = jsonLineItem.getString("uage"); 
} 

दुर्भाग्य से पालन के रूप में, मैं पर उत्पन्न निम्न त्रुटि संदेश "infojson) {"

केवल एक ओवर पुनरावृति कर सकते हैं मिल गया सरणी या java.lang.Iterable

उत्तर

8

के साथ आप JSONArray का उपयोग नहीं कर सकते वह वाक्यविन्यास क्योंकि यह Iterable इंटरफ़ेस को लागू नहीं करता है। एक साइड नोट के रूप में, संभवतः आपके द्वारा किए गए माइक्रो प्रदर्शन सुधार से आपके एप्लिकेशन प्रदर्शन को प्रभावित नहीं होगा क्योंकि वेब सेवा से लौटाए गए JSON परिणाम आमतौर पर आकार में बड़े नहीं होते हैं।

+0

मेरा JSON लगभग 650.000 बाइट है। क्या यह 'बड़े नहीं' के रूप में भी गिना जाता है? – choz

2

आपको वह त्रुटि मिल रही है क्योंकि JSONArrayIterableinterface लागू नहीं करता है।

संक्षेप में, इसे हल करने का कोई साफ तरीका नहीं है; आपको JSONObjects को अपनी कस्टम कक्षा में क्रमबद्ध करना होगा।

हालांकि आपको समय बचाने के लिए, (Object one: all) over (i=0; i < all.getLength(); i++) का उपयोग करके आप कोई रनटाइम सुधार नहीं देंगे।

बस लूप के लिए सामान्य से चिपके रहें।