问题描述
我正在尝试转换以下对象数组输入:
[
{
"Id": "3","Code": "4190484","Expense": "Huge Expense "
},{
"Id": "4","Code": "271","Expense": "Big Expense"
},{
"Id": "3","Code": "433","Expense": "No Expense"
}
]
到这个单个对象的输出:
{
"Id": "3","Expense": "Huge Expense ","Id": "4","Expense": "Big Expense","Id": "3","Expense": "No Expense"
}
您将如何在 Dataweave 中完成此操作?
解决方法
您还可以使用该语言的 dynamic elements 功能:
%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)