【发布时间】:2021-11-04 08:44:06
【问题描述】:
我是 MuleSoft 的新手,正在为 Data Weave 的场景苦苦挣扎。有人可以帮助我以一种优化的方式从输入有效负载中获取所需的输出:
输入:
[
{
"uniqueID": "1",
"Base Rate": "0.15",
"result": "success"
},
{
"uniqueID": "1",
"Base Rate": {
"value": "0.15",
"errorMessage": "Base Rate - Must be between 10 and 100"
},
"result": "failure"
},
{
"uniqueID": "1",
"Base Rate": {
"value": "0.15",
"errorMessage": "Base Rate - Cannot be a decimal"
},
"result": "failure"
},
{
"uniqueID": "1",
"Number of Buildings": {
"value": "1",
"errorMessage": "Invalid Number of Buildings - Gross Area is greater than zero"
},
"result": "failure"
},
{
"uniqueID": "2",
"Closing Cost": {
"value": "-1500",
"errorMessage": "Closing Cost Cannot be negative"
},
"result": "failure"
},
{
"uniqueID": "3",
"Base Rate Tenor": {
"value": "",
"errorMessage": "Base Rate Tenor - Invalid Value"
},
"result": "failure"
}
]
基本利率、结算成本等字段只是示例,可以是任何字段名称;对象的数量也可以变化。 我们只需要考虑那些以“失败”为结果的对象。同一字段可以有多个错误消息,例如在输入中有 2 个不同的对象和错误消息用于“基本速率”。我们需要使用管道运算符将相同字段名称和相同唯一 ID 的错误消息组合在一起。因此,预期的输出如下:
{
"errors":[
{
"uniqueId" : "1",
"Base Rate": "BaseRate Must be between 10 and 100 | Base Rate - Cannot be a decimal" ,
"Number of Buildings": "Invalid Number of Buildings - Gross Area is greater than zero"
},
{
"uniqueId" : "2",
"Closing Cost": "Closing Cost Cannot be negative"
},
{
"uniqueId" : "3",
"Base Rate Tenor": "Base Rate Tenor - Invalid Value"
}
]
【问题讨论】: