Я не могу получить значение ключа из Json. Подробная информация о преобразовании xml в Json приведена ниже.
Входные данные XML:
<DeliveryDetails>
<Information>
<InformationLines>
<InformationLine>
<InformationLineId>1001</InformationLineId>
<ProductId>PREBC518</ProductId>
<ProductDescr>Bag </ProductDescr>
<NumberBase>150.00000000</NumberBase>
<UnitBase>BAG</UnitBase>
</InformationLine>
<InformationLine>
<InformationLineId>1001</InformationLineId>
<ProductId>PREBC518</ProductId>
<ProductDescr>Bag delivery</ProductDescr>
<NumberBase>150.00</NumberBase>
<UnitBase>BAG</UnitBase>
</InformationLine>
<InformationLine>
<InformationLineId>1003</InformationLineId>
<ProductId>PREBC518</ProductId>
<ProductDescr>test</ProductDescr>
<NumberBase>70.00</NumberBase>
<UnitBase>BAG</UnitBase>
</InformationLine>
<InformationLine>
<InformationLineId>1005</InformationLineId>
<ProductId>PREBC518</ProductId>
<ProductDescr> dress </ProductDescr>
<NumberBase>80.00</NumberBase>
<UnitBase>BAG</UnitBase>
</InformationLine>
</InformationLines>
</Information>
%dw 2.0
output application/json
var nb = payload.DeliveryDetails.Information.InformationLines.*InformationLine groupBy
($.InformationLineId ) mapObject (value,key) -> {
(key): sum (value.NumberBase)
}
var test = "1001"
---
nb
Приведенное выше выражение дает результат ниже
{
"1005": "80.00",
"1003": "70.00",
"1001": 300.00
}
Имеются 2 вопроса
1) когда я использую ts.'1001'
, я могу получить "300.00"
, если я использую "ts.test"
, оно не получает значение?, В идеале указанное выше test
может быть присвоено другому значению, поэтому я ищу динамическое c извлечение.
2) Используя указанное выше XML Ввод на основе условия "($ .InformationLineId ==" 1001 ") Мне нужно только получить «сумму BaseNumber».
Я считаю, что этого легко добиться, используя функцию reduce
в Mule4, но я не уверен, как выполнить условие на основе reduce
. Не требуется использовать выше dataweave logi c. Мне просто нужно указать c значение, если InformationLineId =="1001"
его сумма «BaseNumber»
Пожалуйста, дайте мне знать, если вопрос не ясен. Заранее спасибо.