我一直在写一个 json 转换的 jolt,现在已经完成一半了。如果数组中存在,则需要修改数组中的 json 对象,如果根本不存在,则需要创建新对象。该对象可以出现在 json 中的任何位置。
{
"id": "id_1",
"targetId": "targetId42",
"externalId": "1extid",
"textArray": [
{
"name": "attribute1",
"value": "value1"
},
{
"name": "attribute2",
"value": "value2"
},
{
"name": "attribute3",
"value": "to be modified"
}
]
"createdDate": "2020-09-10",
"description": "Value Pack",
"id": "20020",
"state": "Complete",
"requestedCompletionDate": "2022-09-13"
}
预期产量
{
"id": "id_1",
"targetId": "targetId42",
"externalId": "1extid",
"textArray": [
{
"name": "attribute1",
"value": "value1"
},
{
"name": "attribute2",
"value": "value2"
},
{
"name": "attribute3",
"value": "modified value"
}
]
"createdDate": "2020-09-10",
"description": "Value Pack",
"id": "20020",
"state": "Complete",
"requestedCompletionDate": "2022-09-13"
}
如果块 attribute3 不存在,我们将使用可以通过自定义属性传递的值来创建它。 注意 - attribute3 对象可以出现在 textArray 数组中的任何位置。
尝试了不同的震动,但没有得到所需的输出。
您可以使用以下移位转换规范
[
{
"operation": "shift",
"spec": {
"*": "&", // all elements other than "textArray"
"textArray": {
"*": {
"name": {
"@": "&3[&2].&",
"attribute3": { // conditional comparison starts here
"#modified value": "&4[&3].value"
},
"*": {
"@2,value": "&4[&3].value"
}
}
}
}
}
}
]