gpt4 book ai didi

mule - Dataweave 1.0 向数组添加项

转载 作者:行者123 更新时间:2023-12-04 10:13:43 25 4
gpt4 key购买 nike

我的示例有效负载如下:

{
"ID": "72a6dcc0",
"SourceCode": "ABC",
"TargetCode": "DEF",
.
.
.
.
.
"Products": [
{
"ProdId": "410ef294",
"ProdDetails": {
"ProdIdentifier": "410ef294-e80b",
"DateFrom": "2019-01-01T00:00:00Z",
"DateTo": "9999-12-31T00:00:00Z",
"ProductName": "ProdA"
}
}
]
}

我需要向“Products”数组添加一个名为“ProdDescription”的新属性,以便我的输出如下所示:
{
"ID": "72a6dcc0",
"SourceCode": "ABC",
"TargetCode": "DEF",
.
.
.
.
.
"Products": [
{
"ProdId": "410ef294",
"ProdDetails": {
"ProdIdentifier": "410ef294-e80b",
"DateFrom": "2019-01-01T00:00:00Z",
"DateTo": "9999-12-31T00:00:00Z",
"ProductName": "ProdA",
"ProdDescription": "This is a Sample"
}
}
]
}

我给出的有效负载只是一个示例,它有数百个属性。我只需要向“Products”数组添加一个新属性,并在主要负载中保留其他项目。是否可以执行完整的有效负载“ map ”并在内部使用“mapobject”向数组添加新属性?我在 dataweave 1.0

最佳答案

最简单的方法是使用“-”运算符删除“Product”条目,然后使用“++”添加新的“Product”条目以使用“+”运算符将新元素附加到数组中

所以我所做的是一个辅助函数,它表达了更新字段值的意图。此函数有 3 个参数,首先是要更新的对象,其次是字段名称,第三是将提供新值并使用旧值调用的回调。

这是我的示例代码

%dw 1.0
%input payload application/json
%output application/json

%function updateWith( value,fieldName, newValueProvider)
using(oldValue = value[fieldName]) (
(value - fieldName) ++ {(fieldName): newValueProvider(oldValue)}
)



---
updateWith(payload, "Products",
(products) -> (
{
"Products": products map ((item) ->
updateWith(item, "ProdDetails",
((ProdDetails) -> ProdDetails ++ {"ProdDescription": "This my new Product"})))
}
)
)

关于mule - Dataweave 1.0 向数组添加项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61185281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com