2017-06-23 70 views
0

當我把API我試圖訪問到https://jsonlint.com/,它出來有效。但是,當試圖解析它在android工作室這是我得到:解決JSON的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:at org.json.JSONArray。(JSONArray.java:96) 06-23 20:46:54.093 2420-4258/azanmute.android.com.azanmute W/System.err:at org.json.JSONArray。(JSONArray.java:108) 06-23 20:46:54.093 2420-4258/azanmute .android.com.azanmute W/System.err:在azanmute.android.com.azanmute.Main Activity $ 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:at android.os.AsyncTask $ 2.call(AsyncTask.java:305 ) 06-23 20:46:54.094 2420-4258/azanmute.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:at 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-42 58/azanmute.android.com.azanmute W/System.err:在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);

+0

你還可以發佈你想分析的JSON字符串嗎? – ardilgulez

+0

「{」code「:200,」status「:」OK「,」data「:{」timing「:{」Fajr「:」04:18「,」Sunrise「:」05:31「,」 Dhuhr 「:」 12:22" , 「晡」: 「15:43」, 「落日」: 「19:12」, 「昏禮」: 「19:12」, 「宵」: 「20:25」,」 Imsak「:」04:08「,」Midnight「:」00:22「},」date「:{」readable「:」2017年6月23日「,」timestamp「:」1498243950「}}}'? – cosinepenguin

+0

@cosinepenguin您的JSON無效,請使用JSON Linter檢查錯誤 - https://jsonlint.com/ – Dayan

回答

1

你必須要分析你的JSON字符串:

JSONObject jObject = new JSONObject(jsonString); 
+1

不,他不?他試圖解析一個JSON數組,而不是一個JSON對象。 – ardilgulez

0

即使JSON是由jsonlint服務驗證,我相信Android仍考慮到JSON字符串的格式不正確!這StackOverflow question有關於使用JSON-簡單一些有用的信息,這可能會幫助您解析這些數據:您gradle這個文件

compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1'

本質上講,你需要添加。

然後,如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"); 

希望它有幫助!

+0

嘿! 使用你和Gustavo提供的代碼(我評論了他的代碼現在的樣子)我試着再次使用jsonString,但仍然得到相同的錯誤:/ **編輯:現在不同的錯誤:06-23 21:56: 40.703 2447-3222/azanmute.android.com.azanmute W/System.err:意外的字符(<)在位置0 ** – Fencer300

0

你試圖解析StringJSONObject不是JSONArray,所以你應該做

JSONObject jsonObject = new JSONObject(jsonString); 

如果你真的需要一個JSONArray,您可以將jsonObject添加到一個數組:

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

感謝您的支持。問題是我的代碼在問題行之前打印了JSON,它仍然給我HTML錯誤,但是不好意思使用那個謝謝! – Fencer300

+0

我得到一個錯誤與放置部分,'無法解決方法放(org.json.JSONOBJECT) – Fencer300

+0

你可以發佈代碼? –