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

如何使用jq将分隔符分隔的非JSON字符串转换为JSON数组?

使用jq将分隔的非JSON数据转换为JSON数组

jq完全支持将逗号、空格或换行分隔的非JSON列表转换为合法的JSON数组,核心是利用-R(Raw Input)模式将输入当作原始字符串处理,再结合字符串拆分或 slurping 功能实现转换。

一、逗号分隔的情况(你的示例场景)

直接使用-R读取原始输入,通过split(",")按逗号拆分字符串为数组,jq会自动处理字符串中的特殊字符(如双引号、大括号)的JSON转义:

echo 'ABC,123,XYZ,A"B,{1}' | jq -R 'split(",")'

输出结果:

["ABC","123","XYZ","A\"B","{1}"]

二、空格分隔的情况

如果改用空格作为分隔符,可通过正则表达式匹配空白符(支持单个/多个空格),同时过滤掉可能产生的空元素:

# 处理单个或多个空格分隔的场景
echo 'ABC  123 XYZ  "A"B {1}' | jq -R 'split(/\s+/) | map(select(length>0))'

三、换行分隔的情况

若每个元素单独占一行,使用-R结合-s(Slurp)模式,直接将所有行打包为JSON数组:

printf 'ABC\n123\nXYZ\n"A"B\n{1}' | jq -R -s .

输出结果:

["ABC","123","XYZ","A\"B","{1}"]

为什么直接传输入会报错?

jq默认会将输入当作JSON格式解析,而逗号分隔的字符串(如A,B,C)并非合法JSON,因此触发解析错误。-R模式会强制jq将输入视为原始字符串,而非JSON数据,从而避免解析报错。


内容的提问来源于stack exchange,提问作者M. Justin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:43:24