我正在尝试转换以下对象数组输入:
[
{
"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)