2013-06-30 6 views
1

Я изучаю получение данных из базы данных или веб-сайта в формате json. Я написал код для анализа данных. Проблема в том, что я получаю JsonException, когда я помещаю строку в конструктор jsonObject. Я искал решение этой проблемы, но похоже, что у моего кода нет никаких проблем. Данные json, которые я получаю из Интернета, также мне нравятся. Я хочу обратиться за помощью к специалистам для чтения этих данных формата json. Вот мой код:JSONException: Значение ___ типа java.lang.String не может быть преобразовано в JSONObject

JSONObject json=null; 

    Toast.makeText(DisplaySubjectsInList.this, "json method", Toast.LENGTH_SHORT).show(); 

    String temp =""; 
    temp = sb.toString(); 


    try 
    { 
     JSONObject jsonObj = new JSONObject(temp); 

     JSONArray jsonArray = jsonObj.getJSONArray("contacts"); 


     ListOfSubjects = new String[jsonArray.length()]; 

     //subjectAddresses = new String[jsonArray.length()]; 


     for(int i=0; i<2; i++) 
     { 
      json = jsonArray.getJSONObject(i); 

      ListOfSubjects[i] = json.getString("name"); 
      //subjectAddresses[i]=json.getString("Adress"); 

      Toast.makeText(DisplaySubjectsInList.this, ListOfSubjects[i], Toast.LENGTH_SHORT).show(); 
     } 

    } 
    catch (JSONException e) 
    { 
     Toast.makeText(DisplaySubjectsInList.this, "json failed", Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 
    } 

Трассировка стека:

06-30 16:28:50.553: W/System.err(1629): org.json.JSONException: Value contacts of type java.lang.String cannot be converted to JSONObject 
06-30 16:28:50.553: W/System.err(1629):  at org.json.JSON.typeMismatch(JSON.java:107) 
06-30 16:28:50.553: W/System.err(1629):  at org.json.JSONObject.<init>(JSONObject.java:158) 
06-30 16:28:50.553: W/System.err(1629):  at org.json.JSONObject.<init>(JSONObject.java:171) 
06-30 16:28:50.553: W/System.err(1629):  at com.example.readingdatabaseinternet.DisplaySubjectsInList.convertFromJsonFormat(DisplaySubjectsInList.java:106) 
06-30 16:28:50.553: W/System.err(1629):  at com.example.readingdatabaseinternet.DisplaySubjectsInList.onCreate(DisplaySubjectsInList.java:54) 
06-30 16:28:50.553: W/System.err(1629):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-30 16:28:50.553: W/System.err(1629):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
06-30 16:28:50.553: W/System.err(1629):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
06-30 16:28:50.553: W/System.err(1629):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
06-30 16:28:50.553: W/System.err(1629):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
06-30 16:28:50.553: W/System.err(1629):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-30 16:28:50.553: W/System.err(1629):  at android.os.Looper.loop(Looper.java:130) 
06-30 16:28:50.553: W/System.err(1629):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-30 16:28:50.553: W/System.err(1629):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-30 16:28:50.553: W/System.err(1629):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-30 16:28:50.553: W/System.err(1629):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-30 16:28:50.553: W/System.err(1629):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-30 16:28:50.553: W/System.err(1629):  at dalvik.system.NativeStart.main(Native Method) 

Вот ссылка на данные в формате JSON: Json

Я также попытался не formated json, но она возвращается <p>Forbidden</p>

С уважением

+1

Опубликовать полный стек, пожалуйста. – hexafraction

+0

Каково содержимое вашего 'StringBuilder' sb? –

+0

Код выглядит хорошо, можете ли вы разместить образец JSON? В ошибке явно указано, что то, что у вас есть в JSONArray, это строки, а не JSONObjects. – momo

ответ

0

Вам необходимо для кодирования вашего json без его форматирования. Парсер не любит «украшенный» json.

+0

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

+0

Его json отформатирован, я говорю ему не использовать форматированный json, так как это вызывает исключение, как это не ответ? –

+0

Я пробовал эту [ссылку] (http://jsbin.com/ubucaj/2) unformated json также, но с незначительными изменениями в коде. Заменено '\t JSONObject jsonObj = новый JSONObject (temp); \t JSONArray jsonArray = jsonObj.getJSONArray ("контакты"); ' с' JSONArray jsonArray = new JSONArray(); 'в приведенном выше коде, но тогда я получаю другие ошибки. Я удалил ## END из него – user2498079

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