You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:59:10