DataWeave中XML转JSON返回null值,求正确转换方案
问题
需要将以下XML payload转换为指定格式的JSON:
输入XML:
<?xml version="1.0" encoding="UTF-8" ?> <response> <status_code>0</status_code> <goods goods_code="A999"> <cs cs_code="00100L" color_id="8" size_id="3"/> <cs cs_code="00100M" color_id="8" size_id="2"/> </goods> </response>
期望输出JSON:
[ { "cs_code": "00100L", "color_id": 8, "size_id": 3 }, { "cs_code": "00100M", "color_id": 8, "size_id": 2 } ]
原转换代码payload.response.goods执行后得到错误结果:{"cs": null, "cs": null},需要正确的DataWeave代码。
解决方案
正确的DataWeave代码如下:
%dw 2.0 output application/json --- payload.response.goods.*cs map (csItem) -> { cs_code: csItem.@cs_code, color_id: csItem.@color_id as Number, size_id: csItem.@size_id as Number }
代码说明
payload.response.goods.*cs:使用*操作符获取<goods>节点下所有重复的<cs>节点,返回一个数组map函数遍历每个<cs>节点,将节点的属性转换为JSON对象的键值对:csItem.@xxx:通过@访问XML节点的属性as Number:将color_id和size_id的字符串值转换为数字类型(如果不需要类型转换可直接去掉该部分)
执行这段代码后,即可得到符合预期的JSON数组格式。
内容的提问来源于stack exchange,提问作者maomifadacai
相关产品推荐
相关产品推荐

