簡體   English   中英

解析JSON的Android Studio問題

[英]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"); 

希望能幫助到你!

您要解析的StringJSONObject而不是JSONArray ,因此您應該執行

JSONObject jsonObject = new JSONObject(jsonString);

如果確實需要JSONArray ,則可以將jsonObject添加到數組中:

JSONArray jsonArray = new JSONArray();
jsonArray.put(jsonObject);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM