web-dev-qa-db-ja.com

MuleDataWeaveでJSONの配列をフィルタリングする方法

私はこのようなJSONを持っています:

{
  "dcsId": "1184001100000000517",
  "marketCode": "US",
  "languageCode": "en-US",
  "profile": {
  "base": {
     "username": "arunima27",
     "activeInd": "R",
     "phone": [
       {
          "activeInd": "Y",
          "type": "mobile",
          "primaryInd": "Y",
          "number": "2234566788"
       },
       {
         "activeInd": "N",
         "type": "mobile",
         "primaryInd": "N",
         "number": ""
       }
      ]
    }
  }
 }

この入力JSONから、payload.profile.base.phone.numberを抽出する必要があります。payload.profile.base.phone.type== "mobile"およびpayload.profile.base.phone.activeInd == "Y"です。実際には、JSON配列(payload.profile.base。* phone)をループして、アクティブで、カテゴリ/タイプがモバイルである電話番号のみを取得する必要があります。

以下のような出力が必要です:

{
  "dcsId": "1184001100000000517",
  "marketCode": "US",
  "languageCode": "en-US",
  "username" :  "arunima27", 
  "phoneNumber" : "2234566788"
}  

「phoneNumber」出力変数に対してこの変換を行う際に問題に直面しています。

4
Mohit Mehrotra

電話でfilterおよびmapを使用して、目的の結果を達成します。

phoneNumber: {
    (payload.profile.base.phone filter ($.activeInd == "Y" and $.type == "mobile") map {
        number: $.number
    }
)}

出力

"phoneNumber": {
    "number": "2234566788",
 }
1
Abhay