sta*_*tar 4 mule mule-studio mule-el mule-component
这是我的xml,首先我需要检查'RecordsEntries'不应该是'null',然后RecordEntry不应该null跟随映射代码
<?xml version="1.0" encoding="UTF-8"?>
<Records>
<storenumber />
<calculated>false</calculated>
<subTotal>12</subTotal>
<RecordsEntries>
<RecordEntry>
<deliverycharge>30.0</deliverycharge>
<entryNumber>8</entryNumber>
<Value>true</Value>
</RecordEntry>
<RecordEntry>
<deliverycharge>20.0</deliverycharge>
<entryNumber>7</entryNumber>
<Value>false</Value>
</RecordEntry>
</RecordsEntries>
<RecordsEntries>
<RecordEntry>
<deliverycharge>30.0</deliverycharge>
<entryNumber>8</entryNumber>
<Value>false</Value>
</RecordEntry>
</RecordsEntries>
</Records>
Run Code Online (Sandbox Code Playgroud)
尝试多个场景也使用when条件检查,但某处缺少括号或正确的格式
orders: {
order: {
StoreID: payload.Records.storenumber,
Total: payload.Records.calculated,
(( payload.Records.RecordsEntries.*RecordEntry ) map {
IndividualEntry: {
Number:$.entryNumber,
DeliverCharge:$.deliverycharge
}
} when ( payload.Records.RecordsEntries != null and payload.Records.RecordsEntries.*RecordEntry !=null))}
}
Run Code Online (Sandbox Code Playgroud)
像失踪一样得到错误).通过在第一个循环内直接检查null条件来尝试其他方式得到了错误,例如"无法将数组强制转换为布尔值".请建议.谢谢.
你可以这样做
%dw 1.0
%output application/xml
---
orders: {
order: {
StoreID: payload.Records.storenumber,
Total: payload.calculated,
((payload.Records.*RecordsEntries.*RecordEntry default []) map {
IndividualEntry: {
Number:$.entryNumber,
DeliverCharge:$.deliverycharge
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
DataWeave是用于查询像in的值的"null-safe" payload.Records.*RecordsEntries.*RecordEntry,但是当尝试使用null(例如null map {})操作时会抛出错误.
该default操作者更换的价值在它的左边,如果是null,与右边的一个.
你也错过了*.只要你想要匹配的所有重复元素,你需要在xml中使用它.
| 归档时间: |
|
| 查看次数: |
10287 次 |
| 最近记录: |