ठीक है, मैं यहाँ संघर्ष कर रहा हूँ। मुझे अपने PHP सर्वर (जिसे "परिणाम" कहा जाता है) से निम्न JSON प्रारूपित स्ट्रिंग मिल रही है (संपादित! मैं अंत में एक घुंघराले ब्रेस खो रहा था):

{"L1":[{"उपयोगकर्ता नाम":"उपयोगकर्ता1",,"अवतार":"1"},{"उपयोगकर्ता नाम":"उपयोगकर्ता2",,"अवतार":"2"},{"उपयोगकर्ता नाम":"उपयोगकर्ता3" , "अवतार": "3"}], "एल 2": [{"उपयोगकर्ता नाम": "उपयोगकर्ता 4", "अवतार": "4"}, {"उपयोगकर्ता नाम": "उपयोगकर्ता 5", "अवतार": "5" }]}

मैं L1 ऑब्जेक्ट (?) से अवतार संख्याओं के साथ एक ArrayList निकालने का प्रयास कर रहा हूं। लेकिन मुझे एक त्रुटि मिलती है

org.json.JSONException: मान [{"उपयोगकर्ता नाम": "उपयोगकर्ता 1", "अवतार": "1"}, {"उपयोगकर्ता नाम": "उपयोगकर्ता 2", "अवतार": "2"}, {"उपयोगकर्ता नाम":" User3","अवतार":"3"}] L1 प्रकार के org.json.JSONArray को JSONObject में परिवर्तित नहीं किया जा सकता

यहाँ मेरा कोड है:

try {
                JSONObject jsonObject = new JSONObject(result);
                JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("L1"));
                ArrayList<Integer> arrList = new ArrayList<>();
                if (jsonArray != null) {
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject json = jsonArray.getJSONObject(i);
                        arrList.add(json.getInt("Avatar"));
                        AvatarList = arrList;
                    }
                }
                String query_result = "SUCCESS";
                if (query_result.equals("FAILURE")) {

                } else {
                    setAvatars(AvatarList);
                }
            } catch (JSONException e) {
                Log.e("log_tag", "Error converting result "+e.toString());
            }

अगर मैं उपयोग करता हूँ

jsonObject.getJSONArray("L1") 

मुझे समान त्रुटि मिली। कोई सुझाव? अग्रिम में धन्यवाद!

(संपादित करें: मैंने मूल पोस्ट में गलती की थी। JSON स्ट्रिंग में एक लापता घुंघराले ब्रेस था। इसे पकड़ने वालों के लिए धन्यवाद)

0
pandron 17 मार्च 2017, 04:07
1
यदि आप इस json को jsonlint.com में देखते हैं तो आप देखेंगे कि यह ठीक से फ़ॉर्मेट नहीं किया गया है
 – 
Scary Wombat
17 मार्च 2017, 04:09
1
jsonpath.com के साथ भी खेलें
 – 
Scary Wombat
17 मार्च 2017, 04:15
आपका जेसन अमान्य है। बैकएंड पर इसे ठीक से प्रारूपित करें। त्रुटियों को सत्यापित करने के लिए json jsoneditoronline.org पेस्ट करें।
 – 
Atul Sharma
17 मार्च 2017, 08:35
दो चीज़ें। सबसे पहले, मेरी पोस्ट में JSON स्ट्रिंग के अंत में एक लापता "}" था, इसलिए इसे ठीक किया गया, लेकिन यह समस्या को ठीक नहीं करता है। दूसरा, @atulquest93, उस लिंक के लिए धन्यवाद जो भविष्य में अत्यधिक सहायक होगा!
 – 
Paul A.
17 मार्च 2017, 12:40

2 जवाब

नीचे वाले को आजमाएं।यह ठीक काम कर रहा है। मैं उपयोग कर रहा हूँ json-simple-1.1.1 jar

         String r="{\"L1\":[{\"UserName\":\"User1\",\"Avatar\":\"1\"},{\"UserName\":\"User2\",\"Avatar\":\"2\"},{\"UserName\":\"User3\",\"Avatar\":\"3\"}],\"L2\":[{\"UserName\":\"User4\",\"Avatar\":\"4\"},{\"UserName\":\"User5\",\"Avatar\":\"5\"}]}";

         Object obj=JSONValue.parse(r);  
         JSONObject jsonObject = (JSONObject) obj;  

        JSONArray jsonArray = (JSONArray) jsonObject.get("L1");

        ArrayList<Integer> arrList = new ArrayList<>();
        if (jsonArray != null) {
            for (int i = 0; i < jsonArray.size(); i++) {
                JSONObject json = (JSONObject) jsonArray.get(i);

                arrList.add((Integer.parseInt((String) json.get("Avatar"))));
                AvatarList = arrList;
            }
        }
        String query_result = "SUCCESS";
        if (query_result.equals("FAILURE")) {

        } else {
            setAvatars(AvatarList);
        }
0
Guna 17 मार्च 2017, 13:45

अगर कोई इस पर ठोकर खाता है तो यह मेरे लिए काम कर रहा है। मुझे वास्तव में समझ में नहीं आया कि यह क्यों काम करता है और मेरी मूल विधि नहीं थी ... JSONObjects बनाम JSONArrays बनाम स्ट्रिंग्स और [, {,}, और] जैसी चीजों के साथ कुछ करना।

            try {
                JSONObject jsonObject = new JSONObject(result);
                JSONArray jsonArray = new JSONArray(jsonObject.getString("L1"));
                ArrayList<Integer> arrList = new ArrayList<>();
                if (jsonArray != null) {
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject json = jsonArray.getJSONObject(i);
                        arrList.add(json.getInt("Avatar"));
                        AvatarList = arrList;
                    }
                }
0
Paul A. 17 मार्च 2017, 20:23