[英]Android Studio issue with parsing JSON
當我放入API時,我嘗試訪問https://jsonlint.com/ ,它顯示為有效。 但是當我嘗試在android studio中解析它時,這就是我得到的:
06-23 20:46:54.092 2420-4258 / azanmute.android.com.azanmute W / System.err:org.json.JSONException:java.lang.String類型的值無法轉換為JSONArray 06-23 20:46 :54.093 2420-4258 / azanmute.android.com.azanmute W / System.err:at org.json.JSON.typeMismatch(JSON.java:111)06-23 20:46:54.093 2420-4258 / azanmute.android。 com.azanmute W / System.err:在org.json.JSONArray。((JSONArray.java:96)06-23 20:46:54.093 2420-4258 / azanmute.android.com.azanmute W / System.err:在org .json.JSONArray。(JSONArray.java:108)06-23 20:46:54.093 2420-4258 / azanmute.android.com.azanmute W / System.err:at azanmute.android.com.azanmute.MainActivity $ SaveTheFeed。 doInBackground(MainActivity.java:93)06-23 20:46:54.093 2420-4258 / azanmute.android.com.azanmute W / System.err:at azanmute.android.com.azanmute.MainActivity $ SaveTheFeed.doInBackground(MainActivity。 java:62)06-23 20:46:54.094 2420-4258 / azanmute.android.com.azanmute W / System.err:位於android.os.AsyncTask $ 2.call(AsyncTask.java:305)06-23 20: 46:54.094 2420-4258 / a zanmute.android.com.azanmute W / System.err:at java.util.concurrent.FutureTask.run(FutureTask.java:237)06-23 20:46:54.094 2420-4258 / azanmute.android.com.azanmute W /System.err:在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:243)06-23 20:46:54.094 2420-4258 / azanmute.android.com.azanmute W / System.err:在java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)06-23 20:46:54.094 2420-4258 / azanmute.android.com.azanmute W / System.err:at java.util.concurrent.ThreadPoolExecutor $ Worker .run(ThreadPoolExecutor.java:607)06-23 20:46:54.094 2420-4258 / azanmute.android.com.azanmute W / System.err:at java.lang.Thread.run(Thread.java:761)06 -23 20:46:54.943 2993-3834 / com.google.android.gms W / PlatformStatsUtil:無法檢索“用法和診斷”設置。 放棄。
JSONArray jArray = new JSONArray(jsonString);
錯誤的行是: JSONArray jArray = new JSONArray(jsonString);
您必須通過以下方式解析JSON字符串:
JSONObject jObject = new JSONObject(jsonString);
即使JSON已通過jsonlint服務驗證,我相信Android仍將JSON字符串視為格式不正確! 這個StackOverflow問題具有有關使用json-simple的一些良好信息,這可能有助於您解析該數據:
本質上,您需要添加:
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1'
到您的gradle文件。
然后,正如Arshu解釋的那樣 :“然后,您可以輕松解析JSON,並且不會出現任何錯誤。我為您制作了一個小示例代碼,說明了如何使用它:
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
JSONParser parser_obj = new JSONParser();
JSONArray array_obj = (JSONArray) parser_obj.parse("String from web service");
”
希望能幫助到你!
您要解析的String
是JSONObject
而不是JSONArray
,因此您應該執行
JSONObject jsonObject = new JSONObject(jsonString);
如果確實需要JSONArray
,則可以將jsonObject
添加到數組中:
JSONArray jsonArray = new JSONArray();
jsonArray.put(jsonObject);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.