【问题标题】:parsing JSON with jq to return value of element where another element has a certain value使用 jq 解析 JSON 以返回另一个元素具有特定值的元素的值
【发布时间】:2017-08-18 21:42:51
【问题描述】:

我有一些我想用 jq 解析的 JSON 输出。我阅读了一些有关过滤的示例,但我并不真正理解它,而且我的输出比示例更复杂。除了jq '.[]',我什至不知道从哪里开始,因为除此之外我不了解 jq 的语法,而且层次结构和术语也具有挑战性。我的 JSON 输出如下。我想返回Valid 的值,其中ItemName 等于Item_2。我该怎么做?

"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"

【问题讨论】:

    标签: json filtering jq


    【解决方案1】:

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

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

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

     arrays |
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多