gpt4 book ai didi

使用 jq 在 cli 上解析 Json

转载 作者:行者123 更新时间:2023-12-04 04:37:42 26 4
gpt4 key购买 nike

假设我有以下 json 对象:

{
"d": {
"e": {
"bar": 2
}
},
"a": {
"b": {
"c": {
"foo": 1
}
}
}
}

我想在不输入 '.a.b.c.foo' 的情况下获得值 foo

我意识到我可以做到... echo '{ "a":{"b":{"c":{ "foo":1}}},"d":{"e":{"bar":2}}}' | jq '.[][][].foo'但是 jq 中是否有递归野?像**?我确定 jq 不支持 *,有没有办法让 jq 支持 jsonpath?
或者甚至只是另一个支持 json 路径的 cli 工具?

最佳答案

在 jq 1.4 你可以这样做:

$ jq '..|.foo?' file.json

如果你坚持使用 1.3 你可以使用
$ jq 'recurse(if type == "array" or type == "object" then .[] else empty end) | if type == "object" then . else empty end | .foo' file.json

这有点难吃...这就是为什么 1.4 有 .. ,它通过 . 中的所有可迭代对象向下递归,以及 ?运算符,它不会打扰索引那些不可能的。

关于使用 jq 在 cli 上解析 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com