ठीक है, मैं यहाँ संघर्ष कर रहा हूँ। मुझे अपने 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 स्ट्रिंग में एक लापता घुंघराले ब्रेस था। इसे पकड़ने वालों के लिए धन्यवाद)
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);
}
अगर कोई इस पर ठोकर खाता है तो यह मेरे लिए काम कर रहा है। मुझे वास्तव में समझ में नहीं आया कि यह क्यों काम करता है और मेरी मूल विधि नहीं थी ... 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;
}
}
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।
jsoneditoronline.org
पेस्ट करें।