我有以下形式的 JSON 物件:
{
"vars": {
"node1": {"field1": "a", "field2": "b"},
"node2": {"field1": "x", "field2": "y"}
"unrelated": {"blah": "blah"}
},
"nodes": ["node1", "node2"]
}
unrelated現在,我可以使用以下jq運算式獲取每個節點的欄位(不包括):
.vars[.nodes[]]
輸出:
{
"field1": "a",
"field2": "b"
}
{
"field1": "x",
"field2": "y"
}
我的問題是,如何vars在輸出中包含鍵作為欄位,即
{
"node": "node1",
"field1": "a",
"field2": "b"
}
{
"node": "node2",
"field1": "x",
"field2": "y"
}
鍵的名稱(node在示例中)并不重要。
根據這篇文章,我找到了一個近似的解決方案:
.vars | to_entries | map_values(.value {node: .key})[]
哪個輸出
{
"field1": "a",
"field2": "b",
"node": "node1"
}
{
"field1": "x",
"field2": "y",
"node": "node2"
}
{
"blah": "blah",
"node": "unrelated"
}
但它仍然包括不應該的不相關領域。
uj5u.com熱心網友回復:
將nodes陣列的元素存盤在變數中以供參考。自動存盤元素而不是整個陣列也會為下一步迭代。然后,只需使用nodes陣列項作為{$node}添加到.vars[$node].
jq '.nodes[] as $node | {$node} .vars[$node]'
{
"node": "node1",
"field1": "a",
"field2": "b"
}
{
"node": "node2",
"field1": "x",
"field2": "y"
}
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/422879.html
標籤:
上一篇:如何制作無限類別的json串列?
下一篇:按引數拆分JSON物件
