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

jq能否解析无双引号JSON?如何无需sed直接获取无引号属性值?

关于jq的两个问题解答

1. jq能否解析不包含双引号的JSON?

jq是严格遵循JSON规范的工具,而标准JSON明确要求所有字符串类型的键和值必须用双引号包裹。如果你的数据里没有双引号,那它不属于合法JSON,jq默认没法直接解析这种非标准格式。
要是必须处理这类数据,可以试试用jq的-R(--raw-input)参数,把数据当作纯文本,再写自定义的过滤逻辑来提取内容,但这已经不是解析JSON了,而是文本处理。

2. 如何用jq直接获取不带双引号的属性值?

完全可以,jq自带参数就能实现,不用依赖sed:

方法一:使用-r(--raw-output)参数

这是最常用的方式,直接输出原始字符串,去掉外层双引号:

x=$(curl http://api.open-notify.org/iss-now.json | jq -r .message)
echo $x
# 输出:success

方法二:使用@sh过滤器(适合含特殊字符的场景)

如果目标字符串包含空格、引号这类特殊字符,@sh会自动做shell兼容的转义,同时去掉外层双引号:

# 针对单个属性
x=$(curl http://api.open-notify.org/iss-now.json | jq -r '.message | @sh')

如果只是普通字符串,用-r参数就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:20:42