使用jq解析JSON以返回另一个元素具有特定值的element的值

时间:2017-03-26 04:50:40

标签: json filtering jq

我有一些JSON输出我试图用jq解析。我阅读了一些关于过滤的例子,但我并不是真的理解它,而且我的输出比例子更复杂。我不知道从哪里开始Valid,因为我不了解jq的语法,而且层次结构和术语也具有挑战性。我的JSON输出如下。我想返回ItemName等于Item_2的{​​{1}}的值。我怎么能这样做?

"1"
[
  {
    "GroupId": "1569",
    "Title": "My_title",
    "Logo": "logo.jpg",
    "Tags": [
      "tag1",
      "tag2",
      "tag3"    
    ],
    "Owner": [
      {
        "Name": "John Doe",
        "Id": "53335"
      }
    ],
    "ItemId": "209766",
    "Item": [
      {
        "Id": 47744,
        "ItemName": "Item_1",
        "Valid": false
      },
      {
        "Id": 47872,
        "ItemName": "Item_2",
        "Valid": true
      },
      {
        "Id": 47872,
        "ItemName": "Item_3",
        "Valid": false
      }
    ]
  }
]
"Browse"
"8fj9438jgge9hdfv0jj0en34ijnd9nnf"
"v9er84n9ogjuwheofn9gerinneorheoj"

1 个答案:

答案 0 :(得分:1)

除了初始和尾随JSON标量之外,您只需编写:

.[] | .Item[] | select( .ItemName == "Item_2" ) | .Valid

在您的特定情况下,为了确保忽略顶级JSON标量,您可以在上面加上前缀:

 arrays |