2016-08-25 3 views
-2

Выход String jsreturn: [{"type":1, "msg":"ERROR"}].org.json.JSONException: JSONArray [0] не является JSONObject

Я пытаюсь получить содержание ключа msg, которое является ОШИБКОЙ. Я делаю это, преобразовывая возврат строки в массив. Однако я получаю некоторые ошибки, прокомментированные рядом с каждой строкой следующего кода. Любое понимание?

Vector<ClsReturn> ret = null; 
ret = ds.id(collection, "fs",in_uri); 

String jsReturn = ret.toString(); 

JSONObject myJsonObject = new JSONObject(ret); 

JSONArray array = new JSONArray(jsReturn); 

int i = 0; 

while(i < array.length()){ 
    myJsonObject = array.getJSONObject(i); //org.json.JSONException: JSONArray[0] is not a JSONObject. 
    System.out.println(myJsonObject.getString("msg")); 
    i++; 
} 
+0

Ваш пример не имеет смысла, так как вы пытаетесь получить доступ к 'msg' который ваш JSON не имеет (по крайней мере, тот, который вы показываете нам). Также ваш массив представляет 'solrReturn', а не' jsReturn', который держит ваш JSON. – Pshemo

+0

Это не то, как вы должны писать массив JSon, тип возврата SOLr не предназначен для использования с объектами json, чтобы вернуть массив объектов json или определить список объектов, содержащий эти два параметра, или список подстановочных знаков. –

+0

Я не могу воспроизвести эту проблему с вашим текущим кодом, что предполагает, что 'jsReturn' не может содержать структуру JSON, которую вы описываете. – Pshemo

ответ

2

Я не знаю, если я понял ваш вопрос, я думаю, что это легко, это работает:

String jsReturn =" [{\"type\":1, \"txt\":\"ERROR\"}]"; 
    JSONArray array = new JSONArray(jsReturn); 
    int i = 0; 
    JSONObject myJsonObject = new JSONObject(); 
    while(i < array.length()){ 
     myJsonObject = array.getJSONObject(i); 
     System.out.println(myJsonObject.getString("txt")); 
     i++; 
    } 
+0

Да, это правильно –

+0

На этом этапе ваш ответ предполагает, что OP-код должен работать. Пожалуйста, прочитайте: [Ответы «работает на меня»?] (Http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid) – Pshemo

+0

Спасибо @Pshermo Я должен рассмотреть эту деталь , однако вопрос указывает: «Я получаю некоторые ошибки, прокомментированные», и этот ответ должен решить эту ошибку. Если в этом вопросе важно понять, почему это происходит, я объясню код. Еще раз спасибо – MrElefant

Смежные вопросы