如何使用jq解析带有来自BASH变量的键的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变量中提供的键的值。我在变

我有一个这种格式的JSON数组

{
  "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…将起作用