如何在过滤封闭对象中的属性值时获取封闭对象的名称

问题描述 投票:0回答:1

我有一个如下所示的 JSON 文件:

{
  "somename": {
    "prop1": "https://xxxx",
    "prop2": "xxxx",
    "prop3": false
  },
  "anothername": {
    "prop1": "https://yyyy",
    "prop2": "yyyy",
    "prop3": false
  },
  "fubar": {
    "prop1": "https://yyyy",
    "prop2": "yyyy",
    "prop3": false
  },
  ...
}

我主要使用 JSON 文件,其中事物的属性名称是恒定的,并且值会变化,并且我根据命名属性的值进行过滤。

在这种情况下,“prop1”、“prop2”和“prop3”属性是已知的,但封闭对象的名称(本质上是该属性的名称)是不同的。我需要获取的是这些属性名称。 例如,我需要获取“prop2”属性等于“yyyy”的命名块列表。 在这种情况下,它将是“anothername”和“fubar”,但我不知道如何在 jq 中做到这一点。

jq
1个回答
0
投票

两者都有效

to_entries[] | select(.value.prop2 == "yyyy") .key
path(.[] | select(.prop2 == "yyyy"))[0]
© www.soinside.com 2019 - 2024. All rights reserved.