Json 用于在dataweave mule中添加列表的mule代码

Json 用于在dataweave mule中添加列表的mule代码,json,merge,mule,mule-component,dataweave,Json,Merge,Mule,Mule Component,Dataweave,我试图从JSON文件中提取物理地址和邮寄地址。我可以单独检索它们,但无法在dataweave中合并它们。下面的dataweave代码将提供物理地址和邮寄地址列表,但我想要一个包含物理地址和邮寄地址的地址列表 下面是使用的dataweave代码: physicaladdress: payload01.attributes.PhysicalAddress map ((physicalAddress , indexOfPhysicalAddress) -> { type: physica

我试图从JSON文件中提取物理地址和邮寄地址。我可以单独检索它们,但无法在
dataweave
中合并它们。下面的dataweave代码将提供物理地址和邮寄地址列表,但我想要一个包含物理地址和邮寄地址的地址列表

下面是使用的dataweave代码:

    physicaladdress: payload01.attributes.PhysicalAddress map ((physicalAddress , indexOfPhysicalAddress) -> {
type: physicalAddress.value.AddressType.value ,
lineOne: physicalAddress.value.AddressLine1[0].value as :string ,
lineTwo: physicalAddress.value.AddressLine2[0].value as :string,
country: physicalAddress.value.Country[0].value as :string 
}) when payload01.attributes.PhysicalAddress != null  otherwise null,
    mailingaddress: payload01.attributes.MailingAddress map ((mailingAddress , indexOfMailingAddress) -> {
type: mailingAddress.value.AddressType.value ,
lineOne: mailingAddress.value.AddressLine1[0].value as :string,
lineTwo: mailingAddress.value.AddressLine2[0].value as :string ,
country: mailingAddress.value.Country[0].value as :string 
}) when payload01.attributes.MailingAddress != null otherwise null,
非常感谢您的帮助

使用所附dataweave代码的当前响应:

    "physicaladdress": [
  {
    "type": "Physical",
    "addressLine1": "1166 Quail Ct310",
    "cityName": "Pewaukee",
    "country": "United States"
  },
  {
    "type": "Physical",
    "addressLine1": "1166 Quail Ct Ste 310-310 Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  }
],
"mailingaddress": [
  {
    "type": "Mailing",
    "lineOne": "1166 Quail Ct Ste 310-310 Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  },
  {
    "type": "Mailing",
    "lineOne": "1166 Quail Ct Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  }
]
预期答复:

    "address": [
  {
    "type": "Physical",
    "addressLine1": "1166 Quail Ct Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  },
  {
    "type": "Physical",
    "addressLine1": "1166 Quail Ct Ste 310-310 Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  },
{
    "type": "Mailing",
    "lineOne": "1166 Quail Ct Ste 310-310 Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  },
  {
    "type": "Mailing",
    "lineOne": "1166 Quail Ct Ste 310",
    "cityName": "Pewaukee",
    "country": "United States"
  }
]
如果我将dataweave代码更改为以下代码,我将只获得邮寄地址,认为邮寄地址覆盖了物理地址:

    address: payload01.attributes.PhysicalAddress map ((physicalAddress , indexOfPhysicalAddress) -> {
type: physicalAddress.value.AddressType.value ,
lineOne: physicalAddress.value.AddressLine1[0].value as :string ,
lineTwo: physicalAddress.value.AddressLine2[0].value as :string,
country: physicalAddress.value.Country[0].value as :string 
}) when payload01.attributes.PhysicalAddress != null  otherwise null,
    address: payload01.attributes.MailingAddress map ((mailingAddress , indexOfMailingAddress) -> {
type: mailingAddress.value.AddressType.value ,
lineOne: mailingAddress.value.AddressLine1[0].value as :string,
lineTwo: mailingAddress.value.AddressLine2[0].value as :string ,
country: mailingAddress.value.Country[0].value as :string 
}) when payload01.attributes.MailingAddress != null otherwise null,

我正在寻找附有列表(实物和邮寄)示例的地址,以供参考。

看看这是否能帮助您:

Sample Input :

{

"physicaladdressList" : [
            "physicaladdress" : {
                "type":  "01" ,
                "lineOne": " 1st Address Line1(P)",
                "lineTwo": " 1st Address Line2 (P)",
                "country": "INDIA" 
             },
         "physicaladdress" :{
            "type":  "02" ,
            "lineOne": "2nd Address Line1(P)",
            "lineTwo": "2nd Address Line2(P)",
            "country": "INDIA" 
         },
          "physicaladdress" : {
            "type":  "03" ,
            "lineOne": "3rd Address Line1(P)",
            "lineTwo": "3rd Address Line2(P)",
            "country": "INDIA" 
         }
 ],
 "mailingaddressList" : [
          "mailingaddress" :{
                "type":  "04" ,
                "lineOne": "1st Address Line1(M)",
                "lineTwo": "1st Address Line2(M)",
                "country": "INDIA" 
             },
         "mailingaddress" : {
            "type":  "05" ,
            "lineOne": "2nd Address Line1(M)",
            "lineTwo": "2nd Address Line2(M)",
            "country": "INDIA" 
         },
         "mailingaddress" : {
            "type":  "06" ,
            "lineOne": "3rd Address Line1(M)",
            "lineTwo": "3rd Address Line2(M)",
            "country": "INDIA" 
         }]

 }

===============DataWeave===============================
%dw 1.0
%input payload application/json
%output application/json
%var phydata = payload.physicaladdressList.physicaladdress 
%var mailddata = payload.mailingaddressList.mailingaddress 
%var b = sizeOf (payload.physicaladdressList.physicaladdress)
%var a = 0
%var c= b - 1
---
   [[a][0] .. [c][0]] map {
        Address :
      {
          PhysicalAddress: 
            { 
                "Type" : phydata[$][0].type,
                "AddressLine1" : phydata[$][1].lineOne,
                "AddressLine2" : phydata[$][2].lineTwo,
                "Country" : phydata[$][3].country
            },
            MailingAddress: 
            { 
                "Type" : mailddata[$][0].type,
                "AddressLine1" : mailddata[$][1].lineOne,
                "AddressLine2" : mailddata[$][2].lineTwo,
                "Country" : mailddata[$][3].country
            }

       }             
          }

==========OutPut============================
[
  {
    "Address": {
      "PhysicalAddress": {
        "Type": "01",
        "AddressLine1": " 1st Address Line1(P)",
        "AddressLine2": " 1st Address Line2 (P)",
        "Country": "INDIA"
      },
      "MailingAddress": {
        "Type": "04",
        "AddressLine1": "1st Address Line1(M)",
        "AddressLine2": "1st Address Line2(M)",
        "Country": "INDIA"
      }
    }
  },
  {
    "Address": {
      "PhysicalAddress": {
        "Type": "02",
        "AddressLine1": "2nd Address Line1(P)",
        "AddressLine2": "2nd Address Line2(P)",
        "Country": "INDIA"
      },
      "MailingAddress": {
        "Type": "05",
        "AddressLine1": "2nd Address Line1(M)",
        "AddressLine2": "2nd Address Line2(M)",
        "Country": "INDIA"
      }
    }
  },
  {
    "Address": {
      "PhysicalAddress": {
        "Type": "03",
        "AddressLine1": "3rd Address Line1(P)",
        "AddressLine2": "3rd Address Line2(P)",
        "Country": "INDIA"
      },
      "MailingAddress": {
        "Type": "06",
        "AddressLine1": "3rd Address Line1(M)",
        "AddressLine2": "3rd Address Line2(M)",
        "Country": "INDIA"
      }
    }
  }
]
输入:

数据编织 输出
谢谢莫米塔给你时间。我已附加当前输出和预期输出,以提供有关我遇到的场景的更多信息。@chethan:使用以下代码:%dw 1.0%input payload application/json%output application/json%var maildata=payload.mailingaddress--“Address”:payload.physicaladdress映射{“type”:$.type,“addressLine1”:$.addressLine1,“cityName”:$.cityName,“country”:$.country}++MailddataHanks jitesh,谢谢您的时间。我应该提供示例来解释该场景。我已经用当前输出和预期输出更新了查询,以提供有关场景的更多信息。非常感谢你的帮助。
{
    "Address": {
      "PhysicalAddress": {
        "Type": "01",
        "AddressLine1": " PhysicalAddress Address Line1(P)",
        "AddressLine2": " PhysicalAddress Address Line2 (P)",
        "Country": "INDIA"
      },
      "MailingAddress": {
        "Type": "04",
        "AddressLine1": "MailingAddress Address Line1(M)",
        "AddressLine2": "MailingAddress Address Line2(M)",
        "Country": "INDIA"
      }
    }
  }
%dw 1.0
%output application/json
---


{Address : "MailingAddress": payload.Address.MailingAddress.AddressLine1
+"PhysicalAddress":payload.Address.PhysicalAddress.AddressLine1,
Address2 : "MailingAddress": payload.Address.MailingAddress.AddressLine2
+"PhysicalAddress":payload.Address.PhysicalAddress.AddressLine2}
{"Address": {
"MailingAddress": [
  "MailingAddress Address Line1(M)",
  " PhysicalAddress Address Line1(P)"
]  "Address2": {
"MailingAddress": [
  "MailingAddress Address Line2(M)",
  " PhysicalAddress Address Line2 (P)"
]}}}