更新功能在 dataweave 2 中没有按预期工作?
update function is not working as expected in dataweave 2?
我想更新传入负载中的一行。该字段是 'price'。
我的数据编织脚本是
%dw 2.0
output application/json
---
payload.IntegrationEntities.integrationEntity.integrationEntityDetails.contractUtilization.items.item update
{
case price at .price -> "100"
}
我的有效载荷是;
{
"IntegrationEntities": {
"integrationEntity": [
{
"integrationEntityHeader": {
"integrationTrackingNumber": "XXXX",
"referenceCodeForEntity": "132804",
"additionalInfo": "ADDITIONALINFO"
},
"integrationEntityDetails": {
"contractUtilization": {
"externalId": "417145",
"utilizationType": "INVOICE",
"isDelete": "No",
"documentNumber": "132804",
"documentDescription": "",
"documentDate": "2021-03-26",
"totalSpendAmount": ".92",
"documentCurrency": "AUD",
"createdBy": "Oracle Integration",
"status": "FULLY PAID",
"items": {
"item": [
{
"lineItemId": "132804_1",
"contractNumber": "YYYYYYY",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804",
"quantity": "1",
"price": ".92",
"lineAmount": ".92",
"purchaseOrderNumber": "YYYYYY",
"purchaseOrderDescription": ""
},
{
"lineItemId": "132804_2",
"contractNumber": "YYYYYYY",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804_2",
"quantity": "1",
"price": ".95",
"lineAmount": ".95",
"purchaseOrderNumber": "YYYYYY",
"purchaseOrderDescription": ""
}
]
}
}
}
}
]
}
}
但上面的脚本总是以'.92'的收入有效负载价格返回
我得到的输出是;
[
[
{
"lineItemId": "132804_1",
"contractNumber": "XXXXXX",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804",
"quantity": "1",
"price": ".92",
"lineAmount": ".92",
"purchaseOrderNumber": "YYYYY",
"purchaseOrderDescription": ""
},
,
{
"lineItemId": "132804_2",
"contractNumber": "YYYYYYY",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804_2",
"quantity": "1",
"price": ".95",
"lineAmount": ".95",
"purchaseOrderNumber": "YYYYYY",
"purchaseOrderDescription": ""
}
]
]
我的脚本有什么问题?为什么它不更新我的价格值?为什么我得到部分有效载荷作为输出?
我的要求是,更新价格金额并给出完整的有效负载作为输出。
试试这个
%dw 2.0
output application/json
---
payload update {
case item at .IntegrationEntities.integrationEntity[0].integrationEntityDetails.contractUtilization.items.item[0] -> item update {
case price at .price -> "100"
}
}
正在根据您的要求更新答案:
%dw 2.0
output application/json
---
payload update {
case .IntegrationEntities.integrationEntity[0].integrationEntityDetails.contractUtilization.items.item -> $ map {
($ update {
case .price -> if ($ as Number < 1) "0" ++ $ else $
}
)}
}
我想更新传入负载中的一行。该字段是 'price'。 我的数据编织脚本是
%dw 2.0
output application/json
---
payload.IntegrationEntities.integrationEntity.integrationEntityDetails.contractUtilization.items.item update
{
case price at .price -> "100"
}
我的有效载荷是;
{
"IntegrationEntities": {
"integrationEntity": [
{
"integrationEntityHeader": {
"integrationTrackingNumber": "XXXX",
"referenceCodeForEntity": "132804",
"additionalInfo": "ADDITIONALINFO"
},
"integrationEntityDetails": {
"contractUtilization": {
"externalId": "417145",
"utilizationType": "INVOICE",
"isDelete": "No",
"documentNumber": "132804",
"documentDescription": "",
"documentDate": "2021-03-26",
"totalSpendAmount": ".92",
"documentCurrency": "AUD",
"createdBy": "Oracle Integration",
"status": "FULLY PAID",
"items": {
"item": [
{
"lineItemId": "132804_1",
"contractNumber": "YYYYYYY",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804",
"quantity": "1",
"price": ".92",
"lineAmount": ".92",
"purchaseOrderNumber": "YYYYYY",
"purchaseOrderDescription": ""
},
{
"lineItemId": "132804_2",
"contractNumber": "YYYYYYY",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804_2",
"quantity": "1",
"price": ".95",
"lineAmount": ".95",
"purchaseOrderNumber": "YYYYYY",
"purchaseOrderDescription": ""
}
]
}
}
}
}
]
}
}
但上面的脚本总是以'.92'的收入有效负载价格返回
我得到的输出是;
[
[
{
"lineItemId": "132804_1",
"contractNumber": "XXXXXX",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804",
"quantity": "1",
"price": ".92",
"lineAmount": ".92",
"purchaseOrderNumber": "YYYYY",
"purchaseOrderDescription": ""
},
,
{
"lineItemId": "132804_2",
"contractNumber": "YYYYYYY",
"contractLineId": "",
"lineNumber": "1",
"name": "132804",
"description": "132804_2",
"quantity": "1",
"price": ".95",
"lineAmount": ".95",
"purchaseOrderNumber": "YYYYYY",
"purchaseOrderDescription": ""
}
]
]
我的脚本有什么问题?为什么它不更新我的价格值?为什么我得到部分有效载荷作为输出? 我的要求是,更新价格金额并给出完整的有效负载作为输出。
试试这个
%dw 2.0
output application/json
---
payload update {
case item at .IntegrationEntities.integrationEntity[0].integrationEntityDetails.contractUtilization.items.item[0] -> item update {
case price at .price -> "100"
}
}
正在根据您的要求更新答案:
%dw 2.0
output application/json
---
payload update {
case .IntegrationEntities.integrationEntity[0].integrationEntityDetails.contractUtilization.items.item -> $ map {
($ update {
case .price -> if ($ as Number < 1) "0" ++ $ else $
}
)}
}