2017-06-12 16 views
0

JQ: Nested JSON transformationとよく似た質問ですが、私はその周りに頭を浮かべることができませんでした。共通の親を持つネストされた配列の値から一意の配列を作成する

サンプルJSON:

"value": [ 
{ 
    "FeatureStatus": [ 
    { 
     "FeatureName": "Sway1", 
     "FeatureServiceStatus": "ServiceOperational" 
    }, 
    { 
     "FeatureName": "Sway2", 
     "FeatureServiceStatus": "ServiceDegraded" 
    } 
    ], 
    "Id": "SwayEnterprise", 
}, 
{ 
    "FeatureStatus": [ 
    { 
     "FeatureName": "yammerfeatures", 
     "FeatureServiceStatus": "ServiceOperational" 
    } 
    ], 
    "Id": "yammer" 
} 
] 

私がやりたいことは、次になりJQで出力を作成することです。 FeatureServiceStatusのx個で(すなわち揺れ状態とYammerの)非一意の数千で終わる、または唯一のIDのいずれか

{"Sway":"Sway1":"ServiceOperational"}, 
{"Sway":"Sway2":"ServiceDegraded"}, 
{"Yammer":"yammerfeatures":"ServiceOperational"} 

マイ種々の試み。

いずれのポインタも大歓迎です。私はチュートリアルと料理本を終えました。私はおそらく2.5日jqを使用しています。

+0

1.有効なJSONと同じように入力を修正してください。 2.実際に出力として無効なJSONを使用しますか? 3.入力と "Sway"と "Yammer"トップレベル要素の関係を明確にしてください。 – peak

答えて

0

囲む中括弧は、有効なJSONフィルタを入力をするために追加されていると仮定すると:

.value[] 
| [.Id] + (.FeatureStatus[] | [ .FeatureName, .FeatureServiceStatus ]) 

は生成します。必要に応じて、あなたはその後、これを簡単に再フォーマットすることができ

["SwayEnterprise","Sway1","ServiceOperational"] 
["SwayEnterprise","Sway2","ServiceDegraded"] 
["yammer","yammerfeatures","ServiceOperational"] 

+0

私の悪いですが、はい、JSONは私の最後に有効です(ここには怠惰なコピーと貼り付けがあります)。あなたのソリューションは完璧です。今、私はjqがそれをどのように構築しているのかを書いています。ありがとう:) –

関連する問題