我已经在这里问了一个类似的问题- Parse json and choose items\keys upon condition,但这次略有不同。
示例如下:
[
{
"item1": "value123",
"array0": [
{
"item2": "aaa"
}
]
},
{
"item1": "value456",
"array1": [
{
"item2": "bbb"
}
]
},
{
"item1": "value789",
"array2": [
{
"item2": "ccc"
}
]
}
]我想要得到"item1“的值,只有当"item2”有一个特定值的时候。
假设item2等于"bbb",那么我想要返回的只有"value456“。
我试着用jq来解决这个问题,就像我在上面提到的问题中那样,但没有用,因为我不能从比我用jq的select和map搜索的值更高的级别提取值。
发布于 2015-07-22 10:01:14
如果你发现..的魔力。对于您的目的来说,功能太强大了,以下内容可能会有用。它限制搜索"item2“键。
def some(condition): reduce .[] as $x
(false; if . then . else $x|condition end);
.[]
| to_entries
| select( some( .value | (type == "array") and some(.item2 == "bbb")) )
| from_entries
| .item1如果您的jq有任何/1,则使用它而不是某些/1。
https://stackoverflow.com/questions/31540337
复制相似问题