java - 尝试解析 JSON 字符串时出错。org.json.JSONException:JSONArray 文本必须以“[”开头
问题描述
我正在尝试解析 JSON 字符串,以便可以将其转换为数组并通过索引遍历每个元素。下面是我的代码:
String body = "{\"user\":\"d26d0op3-7da5-6ad8\",\"pass\":\"12784949-2b8c-827d\"}";
ArrayList<String> stringArray = new ArrayList<String>();
JSONArray jsonArray = new JSONArray(body);
for (int i = 0; i < jsonArray.length(); i++) {
stringArray.add(jsonArray.getString(i));
}
System.out.println(stringArray);
当我运行此代码时,我收到以下错误:
Exception in thread "main" org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
我尝试用不同的方式格式化我的身体:
String body = "[{\"user\":\"d26d0op3-7da5-6ad8\",\"instanceId\":\"12784949-2b8c-827d\"}]";
但后来我收到以下错误:
Exception in thread "main" org.json.JSONException: JSONArray[0] is not a String.
我将如何正确解析我的 JSON?
解决方案
您可能想了解一下 JSON 格式。试试http://json.org。
在您的第一种情况下,body
是 JSON“对象”,而不是数组。这类似于字典或键:值对映射。JSON 对象由 { 和 } 分隔。
要解析此主体,您将使用:
JSONObject job = new JSONObject(body);
String username = job.getString("user");
我想这可能就是你所追求的。
在第二种情况下,您的主体是一个 JSON 数组,其中包含一个 JSON 对象。JSON 数组由 [ 和 ] 分隔
如果你想要一个 JSON 字符串数组,它看起来像这样,而不是:
body = "[ \"a\", \"b\", \"c\" ]";
整数数组如下所示:
body = "[ 1,2,3,4 ]";
推荐阅读
- python - 向应用程序用户提供视觉反馈
- ios - 在 Xcode 10 上使用 Date Picker 对象获取时间输入
- recursion - 使用求和求解 T(n) = T(nn/k)+n
- amazon-web-services - 为什么所有 EC2 实例都在同一个可用区启动?
- codeigniter - 提升订单信息系统
- javascript - 浏览器如何异步上传多个文件部分
- java - 如何拆分具有字符串和双精度的输入文本文件?
- c++ - 有没有办法将控制台窗口中显示的所有内容输出到 .txt 中?
- c++ - 清除指针的回调(MCVE:从车辆中自动弹出叛徒士兵)
- python - 逐列python制作列表的二维列表