如何使用jq解析带有来自BASH变量的键的JSON?
我有一个这种格式的JSON数组如何使用jq解析带有来自BASH变量的键的JSON?,json,bash,jq,Json,Bash,Jq,我有一个这种格式的JSON数组 { "id": 707860, "name": "Hurzuf", "country": "UA", "coord": { "lon": 34.283333, "lat": 44.549999 } } 我正在使用jq解析它。我试图只提取BASH变量中提供的键的值。我在变
{
"id": 707860,
"name": "Hurzuf",
"country": "UA",
"coord": {
"lon": 34.283333,
"lat": 44.549999
}
}
我正在使用jq
解析它。我试图只提取BASH变量中提供的键的值。我在变量中用一个键尝试了这一点,它成功了
KEY=id
jq -r --arg key $KEY '.[] | .[$key]'
然而,当我用KEY=coord.lat
尝试同样的方法时,输出是null
,当键的数量不是给定的时候,我就被难倒了
例如,如果变量为
KEYS=id,name
KEYS=coord.lon,coord.lat
那么输出应该是
707860,"Hurzuf"
34.283333,44.549999
或者,如果变量为
KEYS=id,name
KEYS=coord.lon,coord.lat
那么输出应该是
707860,"Hurzuf"
34.283333,44.549999
如何做到这一点?将
$key
拆分为单独的路径,并将每个路径转换为getpath
可以理解的格式。然后,您可以收集它们在数组中指向的值,并用逗号将它们连接起来
例如,如果保证没有单个路径组件包含点字符,那么类似这样的内容应该可以正常工作:
[getpath(($key/“,”[]/”)]| join(“,”)
@exonyz那么您的输入是一个数组<代码>jq-r'.[]|[getpath…将起作用