如何将键值对JSON转换为下游系统要求的列表结构JSON?
问题:键值对JSON转指定列表结构的DataWeave转换问题
输入载荷:
{ "9873452": "74298", "9067329": "32115", "1234556": "98765" }
预期输出载荷:
{ "provider": "Salesforce", "payload": [ { "empId": 74298, "empName": "9873452" }, { "empId": 32115, "empName": "9067329" }, { "empId": 98765, "empName": "1234556" } ] }
尝试的DataWeave 2.0代码:
%dw 2.0 output application/json --- payload mapObject ((value, key, index) -> { provider: "Salesforce", payload: [empName: key, empId:value] })
解决方案
正确的DataWeave代码
%dw 2.0 output application/json --- { provider: "Salesforce", payload: payload mapObject ((value, key) -> { empId: value as Number, empName: key }) }
原代码错误分析
- 结构错误:
mapObject会遍历每个键值对生成独立对象,原代码会输出多个包含provider和payload的对象,而非预期的单个顶层对象。 - 类型不匹配:原代码未将
empId的字符串值转换为数字类型,不符合预期输出的类型要求。
代码说明
- 直接构建顶层对象,固定
provider字段值为"Salesforce"。 - 在
payload字段内部使用mapObject,遍历输入的键值对,将每个键转为empName,值转为数字类型的empId,最终生成符合要求的对象数组。
内容的提问来源于stack exchange,提问作者Sunny85
相关产品推荐
相关产品推荐

