【发布时间】:2021-10-05 09:36:02
【问题描述】:
我需要从嵌套数组创建一个平面数组。 输入 JSON 看起来像
[
{
"resource": "r1",
"application": "app1",
"description": "desc1",
"type": "t1",
"labels": [
{
"instance": "i1",
"team": "yellow",
"network": "nnn",
"environment": "prod",
"value": 77,
"stat": "some stat"
},
{
"instance": "i2",
"team": "green",
"network": "mmm",
"environment": "prod",
"value": 0.1
}
]
},
{
"resource": "r2",
"application": "app2",
"description": "desc2",
"type": "t2",
"labels": [
{
"instance": "i3",
"team": "red",
"network": "vvv",
"environment": "prod",
"value": 6457
}
]
}
]
预期的输出是
[
{
"resource": "r1",
"application": "app1",
"description": "desc1",
"type": "t1",
"instance": "i1",
"team": "yellow",
"network": "nnn",
"environment": "prod",
"value": 77,
"stat": "some stat"
},
{
"resource": "r1",
"application": "app1",
"description": "desc1",
"type": "t1",
"instance": "i2",
"team": "green",
"network": "mmm",
"environment": "prod",
"value": 0.1
},
{
"resource": "r2",
"application": "app2",
"description": "desc2",
"type": "t2",
"instance": "i3",
"team": "red",
"network": "vvv",
"environment": "prod",
"value": 6457
}
]
这只是 1 个示例,我需要能够使用不同的键处理数据。基本上每个标签都需要是根级数组的一个项目,其中包含来自添加到它的资源的键和值。我试过这个:
[
{
"operation": "shift",
"spec": {
"*": {
"*": "[&1].&",
"labels": {
"*": {
"*": "[&1].&"
}
}
}
}
}
]
但结果是
[
{
"resource": "r1",
"application": "app1",
"description": "desc1",
"type": "t1",
"instance": [ "i1" , "i3" ],
"team": [ "yellow", "red" ],
"network": [ "nnn", "vvv" ],
"environment": [ "prod", "prod" ],
"value": [ 77, 6457 ],
"stat": "some stat"
},
{
"instance": "i2",
"team": "green",
"network": "mmm",
"environment": "prod",
"value": 0.1,
"resource": "r2",
"application": "app2",
"description": "desc2",
"type": "t2"
}
]
谁能帮我解决这个问题?
【问题讨论】:
-
最外层的键(
resource,application,description,type) 可能是固定的,而labels的元素是动态引入的......? -
@BarbarosÖzhan 这就是我现在最终要做的,但它们可能并不总是固定的。
-
如果您愿意,我可以将它们视为已修复...
-
那将是一个很大的帮助!如果可以,请发布它@BarbarosÖzhan :)