在 mulesoft 中更改对象数组的值
Change value Array of Objects in mulesoft
我是 mulesoft 的初学者,我输出有效负载转换消息如下,但我必须将内部促销数组 planChangeRequired 属性值替换为 true 总是,谁能帮我看看我们怎么替换它。
输出负载
{
"content": {
"data": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Ram"
},
{
"empId": 200,
"empName": "Santhosh"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": false
}
]
}
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
预期结果
{
"info": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Ram"
},
{
"empId": 200,
"empName": "Santhosh"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": **true**
}
]
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
试试下面的代码
%dw 2.0
output application/json
---
payload update {
case .info -> $ update {
case promo at .promotions -> promo map ((item, index) -> item update {
case .planChangeRequired -> "true"
}
)
}
}
Update
函数适合这里。
使用 update
函数,您不需要在 promotions 数组中映射,因为这会改变 ALL planChangeRequired 到 true
%dw 2.0
output application/json
import * from dw::util::Values
---
{
"info": payload.content.data update ["promotions", "planChangeRequired"] with (true),
"meta-info":payload."meta-info"
}
输出
{
"info": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Ram"
},
{
"empId": 200,
"empName": "Santhosh"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": true
}
]
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
假设你想改变不同的 empName 然后更新 if-else
可以在这里工作。
如果你想更新所有的empName那么你可以按照第一种方法
DW 用于所有字段更新
%dw 2.0
output application/json
import * from dw::util::Values
---
{
"info": payload.content.data update ["promotions", "planChangeRequired"] with (true) update ["sharedDataGroups", "empName"] with ((if (($)=="Ram")("Shyam")else "Krish")),
"meta-info":payload."meta-info"
}
输出
{
"info": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Shyam"
},
{
"empId": 200,
"empName": "Krish"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": true
},
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": true
}
]
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
我是 mulesoft 的初学者,我输出有效负载转换消息如下,但我必须将内部促销数组 planChangeRequired 属性值替换为 true 总是,谁能帮我看看我们怎么替换它。
输出负载
{
"content": {
"data": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Ram"
},
{
"empId": 200,
"empName": "Santhosh"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": false
}
]
}
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
预期结果
{
"info": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Ram"
},
{
"empId": 200,
"empName": "Santhosh"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": **true**
}
]
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
试试下面的代码
%dw 2.0
output application/json
---
payload update {
case .info -> $ update {
case promo at .promotions -> promo map ((item, index) -> item update {
case .planChangeRequired -> "true"
}
)
}
}
Update
函数适合这里。
使用 update
函数,您不需要在 promotions 数组中映射,因为这会改变 ALL planChangeRequired 到 true
%dw 2.0
output application/json
import * from dw::util::Values
---
{
"info": payload.content.data update ["promotions", "planChangeRequired"] with (true),
"meta-info":payload."meta-info"
}
输出
{
"info": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Ram"
},
{
"empId": 200,
"empName": "Santhosh"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": true
}
]
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}
假设你想改变不同的 empName 然后更新 if-else
可以在这里工作。
如果你想更新所有的empName那么你可以按照第一种方法 DW 用于所有字段更新
%dw 2.0
output application/json
import * from dw::util::Values
---
{
"info": payload.content.data update ["promotions", "planChangeRequired"] with (true) update ["sharedDataGroups", "empName"] with ((if (($)=="Ram")("Shyam")else "Krish")),
"meta-info":payload."meta-info"
}
输出
{
"info": {
"sharedDataGroups": [
{
"empId": 100,
"empName": "Shyam"
},
{
"empId": 200,
"empName": "Krish"
}
],
"promotions": [
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": true
},
{
"id": "14400007",
"discount": 10.0,
"planChangeRequired": true
}
]
},
"meta-info": {
"version": "V1",
"timestamp": "2022-02-11T12:48:27.679"
}
}