需要解析以下密钥,其中包含zipcodes == 73707802。例如,需要搜索其中一个zipcodes为73707802的状态密钥和名称。如果我搜索73707802,则应返回所有名称和密钥(密钥名称zipcode)
12 abc 73707802
32 cde 73707802
99 xyz 73707802
提前致谢..
#{
"states": [
{
"key": "12",
"name": "abc",
"city": {
"zipcodes": [
73707802,
71444504,
72646331,
73707802
]
}
},
{
"key": "32",
"name": "cde",
"city": {
"zipcodes": [
71444504,
72646331,
73707802
]
}
},
{
"key": "99",
"name": "xyz",
"city": {
"zipcodes": [
72754781,
71444504,
72646331,
73707802
]
}
}
]
}
#
答案 0 :(得分:2)
以下是使用选择和索引的-r
和--arg
选项的解决方案。
.states[]
| select(.city.zipcodes | index($zip|tonumber))
| "\(.key) \(.name) \($zip)"
请注意,在您的示例中,您只显示搜索到的zip,但如果您希望显示其他zipcodes,则可以更改最终格式字符串。
如果您将过滤器放在filter.jq
中,并且您的数据位于data.json
,则可以像这样运行:
$ jq -r --arg zip 73707802 -f filter.jq data.json
12 abc 73707802
32 cde 73707802
99 xyz 73707802