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

如何在jq中将JSON路径以字符串变量形式使用?

解决jq中使用字符串形式JSON路径取值的问题

你当前的写法返回null,是因为把"a.b"当成了单个顶层键名去查找,但你的JSON结构里根本没有名为a.b的顶层键,自然找不到对应值。要处理这种点分隔的路径字符串,需要把路径拆分成多个层级节点,逐层访问。

下面是两种可行的解决方法:

方法1:使用split+getpath函数

这是最简洁的方式,先把路径字符串按.分割成节点数组,再用getpath按数组路径取值:

echo '{"a": {"b": "aaa", "c": ""}, "d": "bbb"}' | jq '"a.b" as $key | $key | split(".") | getpath(.)'

执行后会返回目标值:"aaa"

方法2:使用reduce遍历路径节点

如果需要更灵活的处理逻辑(比如路径中包含特殊字符时可扩展),可以用reduce逐个遍历拆分后的节点,逐层访问对象:

echo '{"a": {"b": "aaa", "c": ""}, "d": "bbb"}' | jq '"a.b" as $key | reduce ($key | split("."))[] as $node (.; .[$node])'

这种方式同样能得到结果:"aaa"

内容的提问来源于stack exchange,提问作者tres.14159

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:20:27