दिलचस्प पोस्ट
कैसे एक सही MySQL कनेक्शन स्ट्रिंग बनाने के लिए? सेटकुकी, हेडर सूचना को संशोधित नहीं किया जा सकता है – हेडर पहले ही भेजे गए हैं ggplot, पहलू, पाइकार्ट: पाई चार्ट स्लाइस के बीच में पाठ रखकर क्या मुझे स्ट्रटस 2 दृश्य परत में डेटाबेस रिकॉर्ड प्राप्त करना चाहिए? MySQL में आउटपुट क्लॉज जावा में एक शक्ति के लिए संख्या बढ़ाना कैसे एक आम पूर्वज के बिना दो शाखाओं को मर्ज करने के लिए? नई ग्रेडल प्रोजेक्ट को आयात करने में असफल: टूल टूल्स संशोधन * .0.0 खोजने में विफल एनजीएन प्रॉक्सी अमेज़ॅन एस 3 संसाधन पोस्टग्रेज़ में धारावाहिक प्राथमिक कुंजी कॉलम का उपयोग करने वाली तालिकाओं का सुरक्षित और साफ तौर पर नाम बदलें? ओरेकल एसक्यूएल डेवलपर में दी गई तालिका को किस तालिका में पता लगाया जा सकता है? PHP में कॉलिंग फ़ंक्शन / विधि का नाम कैसे प्राप्त करें? क्या सी / सी ++ में% (मॉड्यूलस) का उपयोग करने के लिए कोई विकल्प है? दृश्य स्टूडियो में मिलान ब्रेस पर जाएं? बाश में एक फ़ाइल को स्थानांतरित करने का एक कारगर तरीका

Android में एक JSON ऑब्जेक्ट को पार्स कैसे करें

मुझे JSON ऑब्जेक्ट से मूल्य खींचने में कुछ समस्याएं आ रही हैं I यहाँ मेरा कोड है

try { JSONObject json = new JSONObject(result); JSONObject json2 = json.getJSONObject("results"); test = json2.getString("name"); } catch (JSONException e) { e.printStackTrace(); } 

test को String रूप में घोषित किया जाता है जब कोड चलता है तो यह null दिख रहा है। अगर मैं डीबग मोड में json2 पर होवर करता हूं तो मैं ऑब्जेक्ट के भीतर सभी मान और नाम देख सकता हूँ।

मैंने भी कोशिश की

 test = json2.length(); 

यह test = 0 वापस आया यहां तक ​​कि जब मैं json2 ऑब्जेक्ट पर मंडराना करता हूं तो मैं ऑब्जेक्ट के भीतर मान पढ़ सकता हूं।

यहां एक JSON स्ट्रिंग का उदाहरण है जो मैं उपयोग करूंगा।

 { "caller":"getPoiById", "results": { "indexForPhone":0, "indexForEmail":"NULL", "indexForHomePage":"NULL", "indexForComment":"NULL", "phone":"05137-930 68", "cleanPhone":"0513793068", "internetAccess":"2", "overnightStay":"2", "wasteDisposal":"2", "toilet":"2", "electricity":"2", "cran":"2", "slipway":"2", "camping":"2", "freshWater":"2", "fieldNamesWithValue":["phone"], "fieldNameTranslations": ["Telefon"], "id":"1470", "name":"Marina Rasche Werft GmbH & Co. KG", "latitude":"52.3956107286487", "longitude":"9.56583023071289" } } 

Solutions Collecting From Web of "Android में एक JSON ऑब्जेक्ट को पार्स कैसे करें"

अंत में मैंने इसे JSONObject.get बजाय JSONObject.get का उपयोग कर हल किया और फिर String test डाला।

 private void saveData(String result) { try { JSONObject json= (JSONObject) new JSONTokener(result).nextValue(); JSONObject json2 = json.getJSONObject("results"); test = (String) json2.get("name"); } catch (JSONException e) { e.printStackTrace(); } } 

http://developer.android.com/reference/org/json/JSONTokener.html पर एक नज़र डालें

यह आपकी समस्या को ठीक कर सकता है

आपके JSON प्रारूप में, यह JSON ऑब्जेक्ट को प्रारंभ नहीं करता है

पसंद :

 { "info" : <!-- this is starting JSON object --> { "caller":"getPoiById", "results": { "indexForPhone":0, "indexForEmail":"NULL", . . } } } 

जेसन से ऊपर JSON ऑब्जेक्ट के रूप में info शुरू होता है तो निष्पादित करते समय:

 JSONObject json = new JSONObject(result); // create JSON obj from string JSONObject json2 = json.getJSONObject("info"); // this will return correct 

अब, हम result फ़ील्ड का उपयोग कर सकते हैं:

 JSONObject jsonResult = json2.getJSONObject("results"); test = json2.getString("name"); // returns "Marina Rasche Werft GmbH & Co. KG" 

मुझे लगता है कि यह अनुपलब्ध था और इसलिए समस्या का हल किया गया था, जबकि हम JSONTokener इस्तेमाल JSONTokener जैसे तुम्हारा जवाब।

आपका जवाब बहुत ठीक है बस मुझे लगता है कि मैं इस जानकारी को जोड़ने तो मैं जवाब दिया

धन्यवाद

 JSONArray jsonArray = new JSONArray(yourJsonString); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj1 = jsonArray.getJSONObject(i); JSONArray results = patient.getJSONArray("results"); String indexForPhone = patientProfile.getJSONObject(0).getString("indexForPhone")); } 

JSONArray में बदलें, फिर JSONObject में कनवर्ट करें।