我试图创建一些类似于表与实例ID和他们的标签和其他细节,这一步,我卡住了它的移动EC2标签放置在嵌套数组作为Dict对象。这里已经转换了标签字典,只需要把它和另一个数据放在一起。
{
"Id": "i-0e27418e091ea97a7",
"Name": "php"
}
{
"Id": "i-0b0a0cb6223701cb5",
"Name": "Logics-SF-Migration",
"q": "ngix"
}
以上期望的结果,down是源json。
{
"Id": "i-0e27418e091ea97a7",
"Tags": {
"Name": "php"
}
}
{
"Id": "i-0b0a0cb6223701cb5",
"Tags": {
"Name": "Main,
"q": "ngix"
}
}
只需添加.Tags
的根路径,然后删除它。您也可以使用临时变量,例如.Tags as $v | del(.Tags) | . + $v
jq '. + .Tags | del(.Tags)'
最简单的解决方案是
jq 'del(.Tags) + .Tags'
{
"Id": "i-0e27418e091ea97a7",
"Name": "php"
}
{
"Id": "i-0b0a0cb6223701cb5",
"Name": "Main",
"q": "ngix"
}
演示与. + .Tags | del(.Tags)
等其他解决方案的主要区别在于,它从未改变的源中删除,而不是从填充的结果中删除,这确实影响.Tags.Tags
中的内容,如果存在的话。例子:
{
"Id": "123",
"Tags": {
"Name": "What about nested Tags?",
"Tags": "Should they be deleted?"
}
}
jq '( . + .Tags | del(.Tags) ),
( del(.Tags) + .Tags )'
{
"Id": "123",
"Name": "What about nested Tags?"
}
{
"Id": "123",
"Name": "What about nested Tags?",
"Tags": "Should they be deleted?"
}
演示