繁体   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