[英]Json parsing on cli using jq
假設我有以下json對象:
{
"d": {
"e": {
"bar": 2
}
},
"a": {
"b": {
"c": {
"foo": 1
}
}
}
}
我想在不輸入'.abcfoo'
情況下獲取值foo
我知道我可以做... echo '{ "a":{"b":{"c":{ "foo":1}}},"d":{"e":{"bar":2}}}' | jq '.[][][].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具有..
的原因,它遍歷了.
和?
運算符,它不會打擾不能被索引的索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.