在 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 function

使用 update 函数,您不需要在 promotions 数组中映射,因为这会改变 ALL planChangeRequiredtrue

%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"
  }
}