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

如何使用jq将逗号分隔的JSON对象转换为JSON数组?

解决逗号分隔JSON对象转JSON数组的问题

我明白你的痛点——这种半合法的JSON格式(多个对象用逗号直接分隔)确实让人头疼,用split(",")只能得到字符串数组,因为jq还没把这些字符串解析成真正的JSON对象。下面给你两种靠谱的解决方案,分别适用于不同场景:

方法一:简单场景(对象内部无逗号)

如果你的JSON对象里没有包含逗号的字符串值(比如{"a": "hello, world"}这种情况不存在),可以用这个简洁的命令:

jq -sR 'split(",") | map(select(length > 0) | fromjson)' myfile.json

命令解释:

  • -s:把整个文件的内容读成单个字符串(而不是逐行处理)
  • -R:以原始字符串模式读取输入,不把内容当成JSON解析
  • split(","):按逗号分割成字符串数组
  • select(length > 0):过滤掉可能存在的空字符串(比如文件末尾多余的逗号导致的)
  • fromjson:把每个字符串解析成真正的JSON对象
  • map(...):对数组里的每个元素执行解析操作

方法二:通用场景(支持对象内部有逗号)

如果你的JSON对象里可能包含带逗号的字符串(比如{"desc": "apple, banana"}),上面的split(",")会错误拆分对象内容。这时候可以用这种更稳妥的方式:

jq -R '.' myfile.json | jq -s 'join("") | "[" + . + "]" | fromjson'

命令解释:

  1. 第一步jq -R '.' myfile.json:把文件内容按原始字符串输出(确保保留所有字符)
  2. 第二步jq -s 'join("")':把所有输入内容拼接成一个完整的字符串
  3. "[" + . + "]":给拼接后的字符串前后加上方括号,变成合法的JSON数组格式
  4. fromjson:把整个字符串解析成JSON数组

这样即使对象内部有逗号,也不会被错误拆分,因为我们是先把整个内容转换成合法的JSON数组格式,再整体解析。

验证效果

假设你的myfile.json内容是:

{"a":1},{"b":2,"desc":"test, case"},{"c":3},

用方法二处理后,会得到正确的数组:

[
  {"a": 1},
  {"b": 2, "desc": "test, case"},
  {"c": 3}
]

内容的提问来源于stack exchange,提问作者mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:37:46