对象数组到包含所有所述对象的单个对象Dataweave



我正在尝试转换以下对象数组输入:

[
{
"Id": "3",
"Code": "4190484",
"Expense": "Huge Expense "   
},
{
"Id": "4",
"Code": "271",
"Expense": "Big Expense"   
},
{
"Id": "3",
"Code": "433",
"Expense": "No Expense"   
} 
]

到此单个对象的输出:

{
"Id": "3",
"Code": "4190484",
"Expense": "Huge Expense ",
"Id": "4",
"Code": "271",
"Expense": "Big Expense",
"Id": "3",
"Code": "433",
"Expense": "No Expense"
}

您将如何在Dataweave中实现这一点?

您还可以使用该语言的动态元素功能:

%dw 2.0
output application/json
---
{(payload)}

就像@aled在他的回答中解释的那样,您不应该在JSON中使用重复的键。

您可以使用reduce((函数,但需要注意的是,在JSON中使用重复键取决于实现。我认为在JSON中使用重复键是一种糟糕的设计。这可能会导致意想不到的行为。某些实现可能会忽略重复项。例如,DataWeave将只返回具有payload.Id的结果对象的一个Id。

如果即使在我提到的之后,你仍然想继续,这是一个例子:

%dw 2.0
output application/json
---
// I don't recommend to use duplicate keys
payload reduce  ((item, acc = {}) -> acc ++ item)

最新更新