2016-02-26 27 views
0

我正在嘗試使用Mule Dataweave將JSON對象轉換爲XML對象。下面是輸入JSON:使用列表對象的JSON到XML Dataweave轉換

{ 
    "root": { 
     "OBJECT1": { 
      "PARAM1": "PARAM1VALUE", 
      "PARAM2": "PARAM2VALUE" 
     }, 
     "OBJECT2": [{ 
      "KEY": "PARAMROWKEYVALUE1", 
      "VALUE": "PARAMROWVALUEVAL1" 
     }, { 
      "KEY": "PARAMROWKEYVALUE2", 
      "VALUE": "PARAMROWVALUEVAL2" 
     }], 
     "OBJECT3": { 
      "PARAM3": "PARAM3VALUE", 
      "PARAM4": "PARAM4VALUE" 
     } 
    } 
} 

我想上面的轉換下面的XML:

<root> 
    <node1>PARAM1VALUE PARAM2VALUE</node1> 
    <args> 
     <paramrow> 
      <KEY>PARAMROWKEYVALUE1</KEY> 
      <VALUE>PARAMROWVALUEVAL1</VALUE> 
     </paramrow> 
     <paramrow> 
      <KEY>PARAMROWKEYVALUE2</KEY> 
      <VALUE>PARAMROWVALUEVAL2</VALUE> 
     </paramrow> 
    </args> 
    <details> 
     <PARAM3>PARAM3VALUE</PARAM3> 
    </details> 
</root> 

但是,當我用這個JSON作爲樣本輸入時,它拋出一個錯誤說「驗證映射「:

%dw 1.0 
%output application/xml 
--- 
payload 

如何將這些對象元素映射到XML?

回答

1

請嘗試以下DataWeave

%dw 1.0 
%output application/xml 
--- 
{ 
    root: { 
     node1: payload.root.OBJECT1.PARAM1 ++ ' ' ++ payload.root.OBJECT1.PARAM2, 
     args: { 
      (payload.root.OBJECT2 map { 
       paramrow: { 
        KEY: $.KEY, 
        VALUE: $.VALUE 
       } 
      }) 
     }, 
     details: { 
      (payload.root.OBJECT3 mapObject { 
       '$$': $ 
      }) 
     } 
    } 
} 
0

@ mlucas67,是在dataweave表達的作品。

這是我嘗試過的另一種方法。

%dw 1.0 
%input payload application/json 
%output application/xml 
--- 
{ 
    root: {(payload map { 
     node1: $.OBJECT1.PARAM1 ++ ' ' ++ $.OBJECT1.PARAM2, 
     args: { 
      ($.OBJECT2 map paramrow: $) 
     }, 
     details: 
      PARAM3: $.OBJECT3.PARAM3 
    }) 
    } 
} 

謝謝大家對此貼子發表了評論。