Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jq解析JSON以返回另一个元素具有特定值的元素的值_Json_Filtering_Jq - Fatal编程技术网

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

使用jq解析JSON以返回另一个元素具有特定值的元素的值,json,filtering,jq,Json,Filtering,Jq,我尝试用jq解析一些JSON输出。我读了一些关于过滤的例子,但我并不真正理解它,我的输出比例子更复杂。除了jq'.[].之外,我甚至不知道从哪里开始,因为我不理解jq的语法,层次结构和术语也很有挑战性。下面是我的JSON输出。我想返回Valid的值,其中ItemName等于Item_2。我该怎么做 "1" [ { "GroupId": "1569", "Title": "My_title", "Logo": "logo.jpg", "Tags": [

我尝试用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标量,您只需编写:

.[] | .Item[] | select( .ItemName == "Item_2" ) | .Valid
在您的特定情况下,为了确保忽略顶级JSON标量,您可以在上面加上前缀:

 arrays |