Java:正确拆分字符串或将字符串转换为JSONArray的方法
如何正确将JSON数组字符串转为JSONArray并拆分条目?
嘿,我发现你代码里的问题啦!你提供的JSON内容本身就是一个JSON数组(开头是[,结尾是]),但你却先把它转换成了JSONObject,这就难怪会报错了——JSONObject只能处理单个对象格式的JSON(用{}包裹的内容),而你的字符串是数组结构的。
下面我来分别解决你的两个问题:
问题2:直接将字符串转换为JSONArray
你的内容本身就是数组格式,所以不需要先转成JSONObject再放入数组,直接用JSONArray的构造方法传入字符串即可:
// content已成功封装所有JSON内容 Path path = Paths.get("src/com/json/inventory.json"); String content = new String(Files.readAllBytes(path), Charset.defaultCharset()); // 直接用JSONArray构造方法解析数组格式的字符串 JSONArray jsonArray = new JSONArray(content);
这样就能正确得到包含所有条目的JSONArray了。
问题1:拆分JSON文件中的各个条目
拿到正确的JSONArray之后,你可以通过循环遍历数组里的每一个元素,每个元素就是一个独立的条目(JSONObject类型),这样就完成了拆分:
// 遍历JSONArray拆分每个条目 for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); // 这里可以处理每个条目,比如获取id和content里的内容 String itemId = item.getString("id"); JSONObject contentObj = item.getJSONObject("content"); String productName = contentObj.getString("name"); // 打印测试或者做其他逻辑处理 System.out.println("条目ID:" + itemId + ",商品名称:" + productName); }
补充说明
- 如果你用的是org.json库(从你的代码看应该是这个),一定要注意区分JSON的结构:
- 用
{}包裹的是单个对象,对应JSONObject - 用
[]包裹的是数组,对应JSONArray
- 用
- 确保你的JSON内容格式是正确的,没有语法错误(比如缺失逗号、引号不配对等),否则解析时也会报错。
内容的提问来源于stack exchange,提问作者user8278795
相关产品推荐
相关产品推荐

