【发布时间】:2021-10-22 22:56:07
【问题描述】:
我有一个有效的转换,但它使用的是硬编码的属性名称引用。我一直在试图弄清楚如何定义一个通用的转换,但我没有找到任何可行的方法。
我的输入数据如下所示:
{
"data": [
{
"A": 1,
"B": "testing",
"C": 100
},
{
"A": 2,
"B": "testing",
"C": 200
}
],
"newVals": {
"B": "new val",
"C": 7
}
}
我想应用 newVals 对象中的值并将它们应用到数组中的对象,以便生成的数据如下所示:
[
{
"A": 1,
"B": "new val",
"C": 7
},
{
"A": 2,
"B": "new val",
"C": 7
}
]
我的转换正在工作,但需要对属性名称进行硬编码。我正在尝试定义一个允许正确修改任何匹配属性名称的转换。这样,如果另一个数据集有一个属性“D”,在 newVals 对象中有一个新值,它就会被应用。
我的硬编码转换如下所示:
[
{
"operation": "modify-default-beta",
"spec": {
"data": {
"*": {
"new_B": "@(3,newVals.B)",
"new_C": "@(3,newVals.C)"
}
}
}
},
{
"operation": "shift",
"spec": {
"data": {
"*": {
"@(0,A)": "[#2].A",
"@(0,new_B)": "[#2].B",
"@(0,new_C)": "[#2].C"
}
}
}
}
]
有没有办法这样写,除了上面的示例数据之外,它还可以转换:
{
"data": [
{
"A": 1,
"E": "testing",
"F": 100
}
],
"newVals": {
"E": "new val",
"F": 7
}
}
【问题讨论】: