Mule DataWeave:多JSON地址对象转单列表的实现问题
如何合并分散的地址字段为统一的地址数组?
我明白你现在的需求:把输入JSON里三个独立的地址对象(ResidentialAddress、OfficeAddress、TempAddress)合并成一个Address数组,之前尝试用address:payload.ResidentialAddress ++ payload.TempAddress没得到想要的结果对吧?
其实问题出在++运算符的用法上——它是用来拼接两个数组的,但你这里的每个地址都是单个对象,不是数组,所以直接用这个运算符会报错或者得到不符合预期的结果。
正确的实现方式(DataWeave 2.0)
你只需要把这三个地址对象直接放进一个数组里就行,代码如下:
%dw 2.0 output application/json --- { Address: [payload.ResidentialAddress, payload.OfficeAddress, payload.TempAddress] }
运行这段代码后,就能得到你想要的目标JSON:
{ "Address": [ { "type": "RES", "Building": "String" }, { "type": "OFC", "Building": "String" }, { "type": "TEMP", "Building": "String" } ] }
进阶处理:过滤空值(可选)
如果你的输入里有可能存在某个地址字段为null的情况,可以加上过滤逻辑,避免数组里出现空元素:
%dw 2.0 output application/json --- { Address: [payload.ResidentialAddress, payload.OfficeAddress, payload.TempAddress] filter ((item) -> item != null) }
这样即使某个地址字段不存在或者为null,最终的Address数组里只会保留有效的地址对象。
内容的提问来源于stack exchange,提问作者Satheesh Kumar
相关产品推荐
相关产品推荐

