无法强制a:数组到mule dataweave中的a:对象

时间:2016-12-19 06:55:36

标签: dataweave

我正在尝试映射多个SalesOrderLine,但是因为无法将数组强制转换为对象而得到错误。我是我的代码。

payload.ORDERS05.*IDOC.E1EDP01 map 
{(

    ns1#SalesOrderCRM: {
    ns0#SalesOrderHeader: {
        ns0#SalesOrderIDs: {
            ns2#ID: payload.ORDERS05.IDOC.E1CUCFG.E1CUPRT.PARENT_ID
        },
        ns0#CustomerParty: {
            ns3#CustomerPartyIDs: {
                ns2#ID: payload.ORDERS05.*IDOC.E1EDP01.E1EDPA1.PARTN[$$]
            },
            ns3#Description: payload.ORDERS05.*IDOC.E1EDP01.E1EDPA1.PARGE[$$],
            ns3#Status: payload.ORDERS05.IDOC.EDI_DC40.STATUS
        }
    },

    ns0#SalesOrderLine: {
        ns0#Description: payload.ORDERS05.*IDOC.E1EDP01.ABGRT[$$],
        ns0#Quantity: payload.ORDERS05.*IDOC.E1EDP01.MENGE[$$],
        ns0#LineNumberID: payload.ORDERS05.*IDOC.E1EDP01.E1EDP20.WMENG[$$],
        ns0#UnitPrice: payload.ORDERS05.*IDOC.E1EDP01.PREIS[$$]
   }
})
}

请为此建议解决方案。

2 个答案:

答案 0 :(得分:2)

map运算符返回:arrayXML output只需要对象。 {( ... )}语法将对象数组转换为包含这些对象中包含的每个键值对(元组)的对象。

要超越您在编辑器中看到的错误,请尝试将整个表达式放在{( )}嵌套大括号中,然后查看您之后得到的内容。

请记住,要生成XML,您必须只输出对象,并且这些对象可以具有多个具有相同键的键/值对。这对应于XML节点。在调试时,通常会将输出更改为java,并查看您正在使用的内容,如下所示:

%output application/java

答案 1 :(得分:0)

尝试为此提供密钥-有效载荷.ORDERS05。* IDOC.E .... 喜欢 key1:payload.ORDERS05。* IDOC.E .....