2016-02-26 62 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 
    }) 
    } 
} 

谢谢大家对此贴子发表了评论。