【发布时间】:2022-02-17 04:36:43
【问题描述】:
我正在 Mule 3 中进行数据转换。我正在更新现有代码,其中在 DataWeave 1.0 中声明了许多变量
我想在声明的变量中添加一个名为“type__c”的字段。
我的输入载荷如下
{
"billofPlaning": {
"billcollection": {
"itemDetail": [
{
"comm": [
{
"commodity": {
"itemSequence": 1,
"equipmentPrefix": "ABCD",
"equipmentNumber": "1234"
}
},
{
"commodity": {
"itemSequence": 2,
"equipmentPrefix": "DEFG",
"equipmentNumber": "5678"
}
}
]
}
]
},
"equip": [
{
"equipment": {
"prefix": "ABCD",
"number": "1234",
"type": 2345
}
},
{
"equipment": {
"prefix": "HIJ",
"number": "7890",
"type": 234567
}
}
]
}
}
我现有的 DataWeave 1.0 脚本是这样的:
%dw 1.0
%output application/java
%var inputData=payload
%var payBill= inputData.billofPlaning.billcollection.itemDetail default [] map (billcode,indexOfbillcode) -> {
billcode: {
"field1": "",
"type__c": ""
}
---
paybill
我想在上面的 DataWeave 1.0 代码中为字段“type__c”重用下面的 DataWeave 2.0 代码。
%dw 2.0
output application/json
var test= ((payload.billofPlaning.equip) filter (($.equipment.prefix == payload.billofPlaning.billcollection.itemDetail.comm[0].commodity.equipmentPrefix[0])
and ($.equipment.number == payload.billofPlaning.billcollection.itemDetail.comm[0].commodity.equipmentNumber[0])))
---
"type__c": test.equipment."type"[0]
我们能否使用 DataWeave 1.0 以更好的方式来做这件事(基本上使用任何局部变量或我们在 DataWeave 1.0 中声明的 payBill 变量中的某些东西)?
【问题讨论】:
-
DWL 并不是一个标准名称。请改用 DataWeave,以便每个人都能准确理解语言是什么。
-
到底是什么问题?您在 DataWeave 1.0 和 2.0 中都有脚本,其中包含变量,因此您似乎知道如何使用变量。要求不明确。您如何理解“更清洁的方式”?您对回应的期望是什么?
-
除了 type__c 之外,DataWeave 1.0 脚本是否应该工作?
-
@aled,我知道如何使用变量,但不确定如何在 dwl 1.0 的已声明变量 payBill 中声明局部变量。我已经通过添加“”为type__c编辑了dwl 1.0
-
@aled,(将 dwl 的名称更正为 Dataweave)我想将 Dataweave 1.0 中的 Dataweave 2.0 代码合并为 type__c 字段,我想在 Dataweave 1.0 代码支付单中使用 Dataweave2.0 测试变量变量然后想将值赋给 type__c ,