我正在使用dw来映射来自XML的json数据。它工作正常。但是获得单个数据的错误输出。 XML代码:
<?xml version="1.0" encoding="UTF-8" ?>
<orders>
<order>
<id>4358153417</id>
<fulfillment>
<tracking_number>915</tracking_number>
<line-items>
<id>8367362760</id>
</line-items>
</fulfillment>
</order>
</orders>
这是我的dw代码 -
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
{
orders:
{
order: payload.orders.order map ((order , indexOfOrder) -> {
id: order.id,
fulfillment: {
tracking_number: order.fulfillment.tracking_number,
line-items: order.fulfillment.line-items
}
})
}
}]]>
</dw:set-payload>
使用额外的空订单输出 -
{orders={order=[{id=4360193928, fulfillment={tracking_number=null, line-items=null}}, {id=null, fulfillment={tracking_number=null, line-items=null}}]}}
但应该是以下内容 -
{orders={order={id=4360193928, fulfillment={tracking_number=915, line-items=[{id=8371710984},{id=8371710985}]}}}}
这些发生在单个订单上。但是对于多个订单都可以。 请帮忙。
答案 0 :(得分:0)
您必须在重复实体之前使用*。试试这个
%dw 1.0
%output application/json
---
{
orders:
{
order: payload.orders.*order map ((order , indexOfOrder) -> {
id: order.id,
fulfillment: {
tracking_number: order.fulfillment.tracking_number,
line-items: order.fulfillment.line-items
}
})
}
}
希望这会有所帮助..