Объединить две полезные нагрузки JSON в одну на основе фильтра - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь объединить две полезные нагрузки JSON в одну. ниже json хранится в полезной нагрузке,

{
   "clients":[
      {
         "status":"IN",
         "clientSoftDeleteIndicator":"N",
         "roles":[
            {
               "clientRoleCodeDesc":"PRIMARY OWNER",
               "clientRoleCode":"PO",
               "roleEffDate":null,
               "clientRoleStatusCode":"IN",
               "clientRoleStatusCodeDesc":"INACTIVE",
               "roleSoftDeleteIndicator":"N",
               "contractID":"49006649"
            },
            {
               "clientRoleCodeDesc":"PRIMARY INSURED",
               "clientRoleCode":"PI",
               "roleEffDate":"2014-11-05",
               "clientRoleStatusCode":"IN",
               "clientRoleStatusCodeDesc":"INACTIVE",
               "roleSoftDeleteIndicator":"N",
               "contractID":"49006649"
            },
             {
               "clientRoleCodeDesc":"PRIMARY INSURED",
               "clientRoleCode":"PI",
               "roleEffDate":"2014-11-05",
               "clientRoleStatusCode":"IN",
               "clientRoleStatusCodeDesc":"INACTIVE",
               "roleSoftDeleteIndicator":"N",
               "contractID":"49006648"
            }
         ],
         "clientID":72341935,
         "statusDate":"2014-11-05",
         "party":{
            "tin4":"0346",
            "addresses":[
               {
                  "addrSoftDeleteIndicator":"N",
                  "city":"HOLLYWOOD",
                  "addressType":null,
                  "zip":"104620000",
                  "country":"U",
                  "line3":null,
                  "line2":null,
                  "line1":"5 MODEL OFFICE",
                  "county":null,
                  "state":"CA",
                  "validIndicator":null,
                  "preferredIndicator":null
               }
            ],
            "firstName":"SALLONARO",
            "middleName":null,
            "lastName":"PARETO",
            "personSoftDeleteIndicator":"N",
            "birthDate":"1987-11-10",
            "sufName":null,
            "preName":"MR",
            "tin":"103380346",
            "taxIdSoftDeleteIndicator":"N",
            "gender":"M",
            "phones":[

            ],
            "martialStatus":null,
            "emails":[

            ],
            "tinType":"U"
         },
         "statusDesc":"INACTIVE"
      }
   ]
}

и ниже json хранится в потоке Переменный договор Переменный

{
   "contracts":[
      {
         "policyEffDate":null,
         "productCode":"97",
         "policyStatusDate":"2014-11-05",
         "cntrctSoftDeleteIndicator":"N",
         "contractID":"49006649",
         "adminSysCode":"FCT",
         "dataSourceCode":null,
         "policyStatus":"B3",
         "lobCode":null,
         "contractIssuerCode":null
      },
      {
         "policyEffDate":null,
         "productCode":"98",
         "policyStatusDate":"2015-11-05",
         "cntrctSoftDeleteIndicator":"N",
         "contractID":"49006648",
         "adminSysCode":"FCT",
         "dataSourceCode":null,
         "policyStatus":"B4",
         "lobCode":null,
         "contractIssuerCode":null
      }
   ]
}

Я хочу скопировать атрибуты из flowVariable в полезную нагрузку, когда contractId совпадает.

ниже мой фрагмент кода, но все, что я получаю, это пустой JSON

%dw 1.0
%output application/json
---
payload.clients.roles map ((role,index) ->
     {
    contracts: ((flowVars.contractVariable.contracts default []) filter (role.contractID == $.contractID)) 
                                            map ((contract ,indexOf)  -> {
        policyEffDate: contract.policyEffDate,
        productCode: contract.productCode,
        policyStatusDate: contract.policyStatusDate,
        cntrctSoftDeleteIndicator: contract.cntrctSoftDeleteIndicator,
        contractID: contract.contractID,
        adminSysCode: contract.adminSysCode,
        dataSourceCode: contract.dataSourceCode,
        policyStatus: contract.policyStatus,
        lobCode: contract.lobCode,
        contractIssuerCode: contract.contractIssuerCode,
        clientRoleCodeDesc: role.clientRoleCodeDesc,
        clientRoleCode: role.clientRoleCode,
        roleEffDate: role.roleEffDate,
        clientRoleStatusCode: role.clientRoleStatusCode,
        clientRoleStatusCodeDesc: role.clientRoleStatusCodeDesc,
        roleSoftDeleteIndicator: role.roleSoftDeleteIndicator,
        contractID: role.contractID
    })
})  

и вывод, который я получаю

[
  {
    "contracts": [

    ]
  }
]

Может кто-нибудь помочь мне с тем, что идет не так, я попробовал несколько способов, но не смог заставить его работать.

Я также прошел через Соберите две полезные нагрузки в Mule ESB , что похоже на мое требование, но не сработало.

любая помощь высоко ценится.

...