2017-06-12 44 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導致下面的輸出;

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

我的各種嘗試要麼結束了數以千計的非唯一(即與搖擺狀態Yammer的),或者只有一個編號與FeatureServiceStatus的X號。

任何指針將不勝感激。我已經閱讀了教程和食譜。我可能在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如何構建它。謝謝 :) –