如何编写DataWeave表达式实现Salesforce响应转JSON数组
解决Salesforce响应转JSON数组的DataWeave问题
问题详情
输入的Salesforce响应数据格式如下:
[ { "Name": "SubscriberKey", "Value": "38hgf5" }, { "Name": "EmailAddress", "Value": "xyz@aol.com" } ], [ { "Name": "SubscriberKey", "Value": "54889" }, { "Name": "EmailAddress", "Value": "abc@aol.com" } ]
期望转换后的JSON数组格式:
[ { "SubscriberKey": "38hgf5", "EmailAddress": "xyz@aol.com" }, { "SubscriberKey": "54889", "EmailAddress": "abc@aol.com" } ]
之前尝试的DataWeave 2.0代码:
payload map (item, index) -> { "SubscriberKey" : item.Value , "EmailAddress" : item.Value }
得到的错误输出:
[ { "SubscriberKey": "38hgf5", "EmailAddress": "38hgf5" }, { "SubscriberKey": "xyz@aol.com", "EmailAddress": "xyz@aol.com" } ]
解决方案
正确的DataWeave 2.0代码如下:
%dw 2.0 output application/json --- payload map (userFieldGroup) -> userFieldGroup reduce (field, result={}) -> result ++ {(field.Name): field.Value}
代码说明
- 外层
map遍历:输入的payload是包含多个用户字段数组的集合,先用map逐个处理每个用户的字段数组(即每个[ {Name:..., Value:...}, ... ]子数组)。 - 内层
reduce合并:对每个用户的字段数组,使用reduce将数组中的每个{Name, Value}对象合并成一个单一对象,把Name的值作为键,Value的值作为对应属性值。
内容的提问来源于stack exchange,提问作者Rajat Jain
相关产品推荐
相关产品推荐

