在mulesoft anypoint中获取单个数据的输出错误

时间:2016-11-12 17:28:06

标签: json xml mule anypoint-studio

我正在使用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}]}}}}

这些发生在单个订单上。但是对于多个订单都可以。     请帮忙。

1 个答案:

答案 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
            }
        })
    }
}

希望这会有所帮助..