繁体   English   中英

XML 到 JSON Dataweave Transformatiion 问题转换属性值

[英]XML to JSON Dataweave Transformatiion issue converting attribute values

我正在尝试将 XML 转换为 JSON,但无法读取最后一个货币属性,应该如何呈现为 json

><order id="2345">
<customer>
    <firstName>ronal</firstName>
    <lastName>kal</lastName>
    <address1>321 Main St.</address1>
    <address2>PO Box [526]</address2>
    <city>Atlanta</city>
    <state>IL</state>
    <zip>7562</zip>
    <orderTotal currency="USD">635.88</orderTotal>
</customer>

**

order:{
  orderid:payload.order.@id,
  customer:payload.order.*customer map 
  {
     Firstname:$.firstName,
     Lastname:$.lastName,
     Address1:$.address1,
     Address2:$.address2,
     City:$.city,
     State:$.state,
     zip:$.zip,
     Ordertoal:payload.
   }

这是你想要的 ?

%dw 2.0
output application/json 
---
order:{
  orderid:payload.order.@id,
  customer:payload.order.*customer map
  {
     Firstname:$.firstName,
     Lastname:$.lastName,
     Address1:$.address1,
     Address2:$.address2,
     City:$.city,
     State:$.state,
     zip:$.zip,
     Ordertoal:$.orderTotal.@currency
  }
   }

你可以试试这个:

输入 :

<order id="2345">
    <customer>
        <firstName>ronal</firstName>
        <lastName>kal</lastName>
        <address1>321 Main St.</address1>
        <address2>PO Box [526]</address2>
        <city>Atlanta</city>
        <state>IL</state>
        <zip>7562</zip>
        <orderTotal currency="USD">635.88</orderTotal>
    </customer>
    
</order>

数据编织代码:

%dw 2.0
output application/json
---
order:{
  orderid:payload.order.@id,
  customer:payload.order.*customer map{
    "Firstname":$.firstName,
    "Lastname":$.lastName,
    "Address1":$.address1,
    "Address2":$.address2,
    "City":$.city,
    "State":$.state,
    "zip":$.zip,
    "OrderTotal":$.orderTotal ++ " " ++ ($.orderTotal.@currency)
  }
}
  

输出 :

{
  "order": {
    "orderid": "2345",
    "customer": [
      {
        "Firstname": "ronal",
        "Lastname": "kal",
        "Address1": "321 Main St.",
        "Address2": "PO Box [526]",
        "City": "Atlanta",
        "State": "IL",
        "zip": "7562",
        "OrderTotal": "635.88 USD"
      }
    ]
  }
}

但是,对于干净的代码,我更喜欢这样编写:

%dw 2.0
output application/json
---
order:{
  orderid:payload.order.@id,
  customer:payload.order.*customer map ((item, index) ->{
    "Firstname":item.firstName,
    "Lastname":item.lastName,
    "Address1":item.address1,
    "Address2":item.address2,
    "City":item.city,
    "State":item.state,
    "zip":item.zip,
    "OrderTotal":item.orderTotal ++ " " ++ (item.orderTotal.@currency)
  } )
}
  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM