2017-03-26 9 views
0

JSONの出力があります。jqを解析しようとしています。私はフィルタリングに関するいくつかの例を読んでいますが、私は実際にそれを理解しておらず、出力は例より複雑です。私はjq '.[]'を越えてどこから始めるべきか分かりません。私はそれ以上のjqの構文を理解していないし、階層と用語も難しいです。私のJSON出力は以下の通りです。 ItemNameItem_2に等しいValidの値を返したいと思います。これどうやってするの?初期および後続JSONのスカラーを除きJSONをjqで解析して、別の要素の値がある要素の値を返します。

"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

、あなたは単純に記述します:

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

をあなたの特定のケースでは、JSONのスカラーは無視されているトップレベルを確保するために、あなたは上記の接頭辞ができwith:

arrays | 
+0

ありがとうございました。 – user2328273

関連する問題