首页 > 解决方案 > Jolt 将元素从子数组传递到父数组

问题描述

在这里,我尝试将 2 个子数组中的元素合并到其父数组中,并留下另一个数组并将第二个数组向上移动两个级别。

有没有办法根据条件更改值,例如在下面的输入中,party.party.sno ="1" ,可以将其更新为party..sno='Y'

输入:

{
  "Parties": [
    {
      "party": {
        "partyId": "100005767",
        "sno": 1,
        "fn": "Th1mas",
        "ln": "Edison",
        "emails": [
          {
            "emailAddress": "jkjk@ui.com"
          }
        ],
        "addresses": [
          {
            "zip": ""
          }
        ],
        "shealth": [
          {
            "stcd": "TN",
            "lno": "1"
          }
        ]
      },
      "seq": {
        "typeCd": "1"
      }
    }
  ]
}

预期输出:

{
  "person": {
    "first_name": "Th1mas",
    "middle_initial": "Edison",
    "last_name": "",
    "email_address": "jkjk@ui.com",
     "pinCode": ""
  },
  "shealth": {
    "statecd": "ON"   
  },
  //this is the seq no from party.sno
  "primary": "Y",    
  "typeCd": "1"
}

尝试这样的规范:

[
  {
    "operation": "shift",
    "spec": {
      "Parties": {
        "*": {
          "party": {
            "emails": {
              "*": {
                "emailAddress": "[&1].email_address",
                "@(2,fn)": "[&1].first_name",
                "@(2,ln)": "[&1].last_name"
              }
            },
            "addresses": {
              "*": {
                "zip": "[&1].pinCode"
              }
            },
            "shealth": {
              "*": {
                "stcd": "[&1].statecd"
              }
            }
          }
        }
      }
    }
    }
]

标签: arraysjolt

解决方案


这个规范有效,

      "party": {
        "sno": {
          "1": {
            "#Y": "primary"
          }
        },

尝试从当前级别应用条件,

[
  {
    "operation": "shift",
    "spec": {
      "Parties": {
        "*": {
          "party": {
            "sno": {
              "1": {
                "#Y": "primary"
              }
            },
            "emails": {
              "*": {
                "emailAddress": "person.email_address",
                "@(2,fn)": "person.first_name",
                "@(2,ln)": "person.last_name"
              }
            },
            "addresses": {
              "*": {
                "zip": "person.pinCode"
              }
            },
            "shealth": {
              "*": {
                "stcd": "shealth.statecd"
              }
            }
          },
          "seq": {
            "typeCd": "typeCd"
          }
        }
      }
    }
    }
]

推荐阅读