此问题在此处已有答案:
How to retrieve the next key value pair in a json file with jq when I know the previous one(2个答案)
2天前关闭。
如果我知道JSON文件中的前一个值,我想检索下一个键值对,如下所示:
{
"metadata":{
"secretSchema":"3.0",
"tenant":"MyTenantName"
},
"globalSecrets":[
{
"secretName":"secretName1",
"secretValue":"secretValue1"
},
{
"secretName":"secretName2",
"secretValue":"secretValue2"
},
{
"secretName":"secretName3",
"secretValue":"secretValue3"
},
{
"secretName":"secretName4",
"secretValue":"secretValue4"
},
{
"secretName":"secretName5",
"secretValue":"secretValue5"
},
{
"secretName":"secretName6",
"secretValue":"secretValue6"
},
{
"secretName":"secretName7",
"secretValue":"secretValue7"
}
]
}
字符串
我只知道secretValue5的值,想检索secretName5值和下一个值(secretName6和secretValue6)
我尝试了以下命令:
.globalSecrets[] | to_entries | while(. != []; .[1:])[:2] | select(first.value == "secretValue5") | first.key, first.value, last.key, last.value
型
但结果是
secretValue
secretValue5
secretValue
secretValue5
型
预期的结果是
secretName5
secretValue5
secretName6
secretValue6
型
我在这篇文章中发布了一个类似的问题,但使用了另一个JSON文件,上面的命令和它的工作正常,但不是从上面的JSON文件。
1条答案
按热度按时间2lpgd9681#
这是基于previous approach,它是关于在一个对象中查找下一个键值对。(与前一种情况相反,它具有显式的顺序),而数组项是对象,输出是找到的对象中的两个值(而不是它们的键值对)。因此,您不需要
to_entries
,也不需要任何对.key
或.value
的引用。只需直接处理数组.globalSecrets
及其项的字段(.secretName
和.secretValue
):个字符
Demo的