如何使用Dataweave 2.0从载荷提取数组值对象并实现XML转JSON
DataWeave 2.0 XML转JSON及数组值提取操作指南
1. XML载荷转换为JSON格式
DataWeave 2.0默认支持XML格式的自动解析,只要输入载荷的MIME类型标记为application/xml,即可直接通过脚本输出JSON:
%dw 2.0 output application/json --- // 直接输出载荷即可完成基础转换,无需额外处理 payload
如果需要自定义字段映射、格式转换,可以自行指定输出结构,比如提取XML属性、嵌套字段等:
%dw 2.0 output application/json --- { // 提取XML节点属性用@前缀 orderId: payload.Root.Order.@orderNo, createTime: payload.Root.Order.CreateTime as DateTime {format: "yyyy-MM-dd HH:mm:ss"}, // 提取嵌套节点内容 contact: payload.Root.Order.Contact.Phone }
2. 数组内对应值对象提取
XML中的重复同级节点会被DataWeave自动识别为数组,建议用*通配符显式指定读取重复节点为数组,避免单个节点时被解析为对象的异常:
常用提取场景示例
(1)获取所有重复节点组成的数组
%dw 2.0 output application/json --- // 提取所有Goods节点组成数组 payload.Root.Order.GoodsList.*Goods
(2)筛选符合条件的数组对象
%dw 2.0 output application/json import * from dw::core::Arrays --- // 筛选商品分类为"数码"的所有对象 payload.Root.Order.GoodsList.*Goods filter ((item) -> item.category == "数码")
(3)提取数组指定位置的对象
%dw 2.0 output application/json --- // 提取数组第一个商品对象 payload.Root.Order.GoodsList.*Goods[0]
参考截图


内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

