2011-04-06 24 views
22

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

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" 
    } 
} 
+0

जेएसओएन स्ट्रिंग उदाहरण जो आपने प्रदान किया है कम से कम मेरे लिए काम करता है। क्या आपको उस स्ट्रिंग के साथ भी समस्याएं आ रही हैं? – harism

+0

क्या आप इस के लिए पूरा कोड दिखा सकते हैं? या कम से कम मेरी समस्या के साथ मेरी समस्या के साथ jsonobject – Giant

उत्तर

43

अंत मैं JSONObject.get बजाय JSONObject.getString का उपयोग कर और फिर से इसे हल में एक 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(); 
    } 
} 
+0

मैं एक ही समस्या में भाग गया और इसे हल करके इसे हल किया दृष्टिकोण। क्या आपने यह स्पष्टीकरण ढूंढने के लिए खोज/प्रबंधन किया था कि यह क्यों काम करता है लेकिन getJSONObject नहीं मिलता है? – Raiyan

10

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

इस पर एक नज़र आपकी समस्या का समाधान हो सकता है ले लो।

+0

मैंने ऊपर अपडेट किया गया कोड पोस्ट किया है, लेकिन मुझे अभी भी एक ही समस्या है @ डेव जी – jiduvah

4
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 में बदलने का।

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

Json से ऊपर info JSON ऑब्जेक्ट के रूप के साथ शुरू होता:

9

अपने JSON प्रारूप में, यह शुरू करने JSON ऑब्जेक्ट

की तरह नहीं है। जबकि क्रियान्वित तो:

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 का उपयोग हल किया गया था।

आपका उत्तर बहुत अच्छा है। बस मुझे लगता है कि मैं इस जानकारी को जोड़ता हूं इसलिए मैंने

धन्यवाद

संबंधित मुद्दे