【问题标题】:Cannot coerce a:array to an a:object in mule dataweave无法将 a:array 强制为 mule dataweave 中的 a:object
【发布时间】:2019-02-05 18:40:14
【问题描述】:

我正在尝试映射多个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[$$]
   }
})
}

请提出解决方案。

【问题讨论】:

  • 我们需要更多信息才能离开。您的输入有效负载是什么样的?您的错误是否显示任何行信息或代码片段?
  • 嘿 @ChadGorshing 我的输入和输出有效负载是 xml 类型。它在我的第一行显示错误。即有效负载.ORDERS05.*IDOC.E1EDP01 映射无法将数组强制转换为对象..我的根元素是 salesOrderCRM

标签: dataweave


【解决方案1】:

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

要解决您在编辑器中看到的错误,请尝试将整个表达式放在 {( )} 嵌套大括号中,然后看看您会得到什么。

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

%output application/java

【讨论】:

    【解决方案2】:

    尝试为此提供密钥 - payload.ORDERS05.*IDOC.E.... 喜欢 key1 :payload.ORDERS05.*IDOC.E .....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2020-04-13
      相关资源
      最近更新 更多