【问题标题】:JOLT remove the field from arrayJOLT 从数组中删除字段
【发布时间】:2022-01-07 13:42:36
【问题描述】:

我必须将帐户复制到输出中的两个级别。从一个层面来看,我需要删除 fullAccountNumber。但在我的颠簸规范中,它正在从两个级别中删除。这是我在 jolt 中删除规范时缺少的东西吗?

我有以下输入

{
  "applicant": {
    "accounts": [
      {
        "fullAccountNumber": "00000000006276110961",
        "maskedAccountNumber": "XXXXXX0961",
        "accountType": "Checking"
      },
      {
        "fullAccountNumber": "00000000006276110961",
        "maskedAccountNumber": "XXXXXX0961",
        "accountType": "Saving"
      }
    ]
  }
}

期望的输出

{
  "accounts": [
    {
      "fullAccountNumber": "00000000006276110961",
      "maskedAccountNumber": "XXXXXX0961",
      "accountType": "Checking"
    },
    {
      "fullAccountNumber": "00000000006276110961",
      "maskedAccountNumber": "XXXXXX0961",
      "accountType": "Saving"
    }
  ],
  "ma-loan": {
    "accounts": [
      {
        "maskedAccountNumber": "XXXXXX0961",
        "accountType": "Checking"
      },
      {
        "maskedAccountNumber": "XXXXXX0961",
        "accountType": "Saving"
      }
    ]
  }
}

摇晃:

[
  {
    "operation": "shift",
    "spec": {
       "applicant": {
          "accounts": ["accounts", "ma-loan.accounts"]
       }
    }
  },
  {
    "operation": "remove",
    "spec": {
       "ma-loan": {
          "accounts": {
             "*": {
                  "fullAccountNumber": ""
               }
           }
       }
    }
  }
]

当前输出:(从两个级别删除 fullAccountNumber)

{
  "accounts": [
    {
      "maskedAccountNumber": "XXXXXX0961",
      "accountType": "Checking"
    },
    {
      "maskedAccountNumber": "XXXXXX0961",
      "accountType": "Saving"
    }
  ],
  "ma-loan": {
    "accounts": [
      {
        "maskedAccountNumber": "XXXXXX0961",
        "accountType": "Checking"
      },
      {
        "maskedAccountNumber": "XXXXXX0961",
        "accountType": "Saving"
      }
    ]
  }
}

【问题讨论】:

  • 我认为这是 remove 规范 的一个很好的例外情况示例

标签: arrays json jolt


【解决方案1】:

我找到了上述问题的解决方案。在我的情况下, remove 操作不起作用,我必须对第一个 shift 操作规范的结果使用 shift 操作。

解决方案 1:

[
  {
    "operation": "shift",
    "spec": {
      "applicant": {
        "accounts": ["accounts", "ma-loan.accounts"]
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "ma-loan": {
        "*": "&1.&",
        "accounts": {
          "*": {
            "fullAccountNumber": {
              "*": {
                "@(2,maskedAccountNumber)": "&5.&4.[&3].maskedAccountNumber",
                "@(2,accountType)": "&5.&4.[&3].accountType"
              }
            }
          }
        }
      }
    }
  }
]

解决方案 2:

稍微改进的解决方案,使用单个 shift 操作。

[
  {
    "operation": "shift",
    "spec": {
      "applicant": {
        "accounts": {
          "*": {
            "fullAccountNumber": {
              "@": "accounts[].&"
            },
            "*": ["accounts[&1].&", "ma-loan.accounts[&1].&"]
          }
        }
      }
    }
  }
]

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2017-12-04
    相关资源
    最近更新 更多