Jolt Identify Transform 和复制字段给出数组而不是值
Jolt Identify Transform and copying fields gives array instead of valie
我有以下 json 输入:
{
"incoming": {
"data": {
"attributes": {
"displayName": "TestDisplayName1",
"authors": "TestAuthors1",
"summary": "TestSummary1"
}
}
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "TestDisplayName2",
"authors": "TestAuthors2",
"summary": "TestSummary3"
}
}
}
}
我希望得到以下输出:
{
"data" : {
"attributes" : {
"displayName" : "TestDisplayName2",
"authors" : "TestAuthors1",
"summary" : "TestSummary1"
}
}
}
使用以下 Jolt 规范(身份转换):
[
{
"operation": "shift",
"spec": {
"incoming": {
"@": ""
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "data.attributes.displayName"
}
}
}
}
}
]
我得到以下输出:
{
"data" : {
"attributes" : {
"displayName" : [ "TestDisplayName1", "TestDisplayName2" ],
"authors" : "TestAuthors1",
"summary" : "TestSummary1"
}
}
}
想知道为什么 displayName 的输出应该是一个值的数组。
尝试了以下解决方法:
[
{
"operation": "shift",
"spec": {
"incoming": {
"@": ""
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "data.attributes.displayName"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"data": {
"attributes": {
"*": "data.attributes.&",
"displayName": {
"1": "data.attributes.displayName"
}
}
}
}
}
]
但它有明显的缺陷,如果 displayName 字段在 incoming.data.attributes 中不存在,displayName 将丢失在输出中。
任何线索都会有所帮助。谢谢。
我想我想出了一个实现转型的方法。该规范给出了预期的输出:
[
{
"operation": "shift",
"spec": {
"incoming": {
"data": {
"attributes": {
"displayName": null,
"*": "data.attributes.&"
}
}
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "data.attributes.displayName"
}
}
}
}
}
]
我有以下 json 输入:
{
"incoming": {
"data": {
"attributes": {
"displayName": "TestDisplayName1",
"authors": "TestAuthors1",
"summary": "TestSummary1"
}
}
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "TestDisplayName2",
"authors": "TestAuthors2",
"summary": "TestSummary3"
}
}
}
}
我希望得到以下输出:
{
"data" : {
"attributes" : {
"displayName" : "TestDisplayName2",
"authors" : "TestAuthors1",
"summary" : "TestSummary1"
}
}
}
使用以下 Jolt 规范(身份转换):
[
{
"operation": "shift",
"spec": {
"incoming": {
"@": ""
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "data.attributes.displayName"
}
}
}
}
}
]
我得到以下输出:
{
"data" : {
"attributes" : {
"displayName" : [ "TestDisplayName1", "TestDisplayName2" ],
"authors" : "TestAuthors1",
"summary" : "TestSummary1"
}
}
}
想知道为什么 displayName 的输出应该是一个值的数组。
尝试了以下解决方法:
[
{
"operation": "shift",
"spec": {
"incoming": {
"@": ""
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "data.attributes.displayName"
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"data": {
"attributes": {
"*": "data.attributes.&",
"displayName": {
"1": "data.attributes.displayName"
}
}
}
}
}
]
但它有明显的缺陷,如果 displayName 字段在 incoming.data.attributes 中不存在,displayName 将丢失在输出中。
任何线索都会有所帮助。谢谢。
我想我想出了一个实现转型的方法。该规范给出了预期的输出:
[
{
"operation": "shift",
"spec": {
"incoming": {
"data": {
"attributes": {
"displayName": null,
"*": "data.attributes.&"
}
}
},
"overriddenValues": {
"data": {
"attributes": {
"displayName": "data.attributes.displayName"
}
}
}
}
}
]