2014-12-18 44 views
0
[ 
    { 
     "ID": 1, 
     "EventDate": "2014-10-10T00:00:00", 
     "EventName": "Geburtstagsparty Michael", 
     "EventDescription": "19.Geburtstag", 
     "ExchangeMoney": 345.5, 
     "Rent": null, 
     "CleanMoney": null, 
     "Earmarked": false, 
     "ResponsibleMember": { 
      "ID": "d3fbc332-99ab-49c8-8374-4ef192db78e4", 
      "Firstname": null, 
      "Lastname": "Aigner", 
      "Birthday": "0001-01-01T00:00:00", 
      "Telephonenumber": null, 
      "Street": null, 
      "PostalCode": null, 
      "City": null, 
      "Username": null, 
      "Password": null, 
      "eMail": null 
     }, 
     "EventType": "Geburtstagsparty" 
    }, 
    { 
     "ID": 2, 
     "EventDate": "2014-12-31T00:00:00", 
     "EventName": "Silvesterparty", 
     "EventDescription": "Happy new Year!", 
     "ExchangeMoney": 551.2, 
     "Rent": null, 
     "CleanMoney": null, 
     "Earmarked": false, 
     "ResponsibleMember": { 
      "ID": "d3fbc332-99ab-49c8-8374-4ef192db78e4", 
      "Firstname": null, 
      "Lastname": "Aigner", 
      "Birthday": "0001-01-01T00:00:00", 
      "Telephonenumber": null, 
      "Street": null, 
      "PostalCode": null, 
      "City": null, 
      "Username": null, 
      "Password": null, 
      "eMail": null 
     }, 
     "EventType": "Feiertags-Feier" 
    } 
] 

我logcat的說:JSONException但有效的JSON字符串

12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕   org.json.JSONException: Value [{"ID":1,"EventDate":"2014-10-10T00:00:00","EventName":"Geburtstagsparty Michael","EventDescription":"19.Geburtstag","ExchangeMoney":345.5000,"Rent":null,"CleanMoney":null,"Earmarked":false,"ResponsibleMember":{"ID":"d3fbc332-99ab-49c8-8374-4ef192db78e4","Firstname":null,"Lastname":"Aigner","Birthday":"0001-01-01T00:00:00","Telephonenumber":null,"Street":null,"PostalCode":null,"City":null,"Username":null,"Password":null,"eMail":null},"EventType":"Geburtstagsparty"},{"ID":2,"EventDate":"2014-12-31T00:00:00","EventName":"Silvesterparty","EventDescription":"Happy new Year!","ExchangeMoney":551.2000,"Rent":null,"CleanMoney":null,"Earmarked":false,"ResponsibleMember":{"ID":"d3fbc332-99ab-49c8-8374-4ef192db78e4","Firstname":null,"Lastname":"Aigner","Birthday":"0001-01-01T00:00:00","Telephonenumber":null,"Street":null,"PostalCode":null,"City":null,"Username":null,"Password":null,"eMail":null},"EventType":"Feiertags-Feier"}] of type java.lang.String cannot be converted to JSONArray 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:111) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at org.json.JSONArray.<init>(JSONArray.java:96) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at org.json.JSONArray.<init>(JSONArray.java:108) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at aignerkatzlberger.htlgrieskirchen.at.jugendraumapp.database.DataRepository.insertEvents(DataRepository.java:58) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at aignerkatzlberger.htlgrieskirchen.at.jugendraumapp.database.DataRepository.access$000(DataRepository.java:32) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at aignerkatzlberger.htlgrieskirchen.at.jugendraumapp.database.DataRepository$RequestTask.onPostExecute(DataRepository.java:134) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at aignerkatzlberger.htlgrieskirchen.at.jugendraumapp.database.DataRepository$RequestTask.onPostExecute(DataRepository.java:91) 
    12-18 23:58:02.132 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at android.os.AsyncTask.finish(AsyncTask.java:632) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at android.os.AsyncTask.access$600(AsyncTask.java:177) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at android.os.Looper.loop(Looper.java:136) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5146) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) 
    12-18 23:58:02.142 14399-14399/aignerkatzlberger.htlgrieskirchen.at.jugendraumapp W/System.err﹕ at dalvik.system.NativeStart.main(Native Method) 

正如你可以在圖片中看到,我得到一個JSONException如果我想JSON字符串轉換爲JSONArray。我不明白,因爲幾個在線測試說我的JSON是有效的。

此外,我必須使用JSONArray作爲根元素,因爲在根級別有「[」括號。

那麼我做錯了什麼?

private void insertEvents(String result) 
{ 
    if(result.equals("-1")) 
    { 
     handleError(); 
    } 
    else 
    { 
     try 
     { 
      // make JSON object 
      JSONArray jArr = new JSONArray(result); 
     } 
     catch (Exception e) 
     { 
      // TODO: handle 
     } 
    } 
} 
+0

您確定這是您嘗試解析的整個JSON字符串嗎?因爲它似乎沒有任何可能導致此類異常的問題。 – rekaszeru 2014-12-18 23:52:14

回答

1

我可以用下面的代碼來重現您的問題:

String s = "'[{ \"ID\": 1, \"EventDate\": \"2014-10-10T00:00:00\", \"EventName\": \"Geburtstagsparty Michael\", \"EventDescription\": \"19.Geburtstag\", \"ExchangeMoney\": 345.5, \"Rent\": null, \"CleanMoney\": null, \"Earmarked\": false, \"ResponsibleMember\": { \"ID\": \"d3fbc332-99ab-49c8-8374-4ef192db78e4\", \"Firstname\": null, \"Lastname\": \"Aigner\", \"Birthday\": \"0001-01-01T00:00:00\", \"Telephonenumber\": null, \"Street\": null, \"PostalCode\": null, \"City\": null, \"Username\": null, \"Password\": null, \"eMail\": null }, \"EventType\": \"Geburtstagsparty\" }, { \"ID\": 2, \"EventDate\": \"2014-12-31T00:00:00\", \"EventName\": \"Silvesterparty\", \"EventDescription\": \"Happy new Year!\", \"ExchangeMoney\": 551.2, \"Rent\": null, \"CleanMoney\": null, \"Earmarked\": false, \"ResponsibleMember\": { \"ID\": \"d3fbc332-99ab-49c8-8374-4ef192db78e4\", \"Firstname\": null, \"Lastname\": \"Aigner\", \"Birthday\": \"0001-01-01T00:00:00\", \"Telephonenumber\": null, \"Street\": null, \"PostalCode\": null, \"City\": null, \"Username\": null, \"Password\": null, \"eMail\": null }, \"EventType\": \"Feiertags-Feier\" } ]'"; 
    try { 
     JSONArray arr = new JSONArray(s); 
     Log.d(TAG, arr.toString()); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

請注意,我用單引號括整個JSON字符串所以我強烈懷疑你的result變量太多。刪除包含JSON的單引號解決了這個問題。

另外:請注意,您得到的錯誤是...of type java.lang.String cannot be converted to JSONArray。這意味着它將result視爲一個String,如果result確實是一個JSON,則它不應該爲result。這幾乎只能意味着result是用引號括起來的有效JSON,因此使得JSON解析器認爲它是一個String。

+0

就是這樣!謝謝! – ComFreakDomi 2014-12-19 14:52:24

相關問題