如何使用 Jolt 转换从数组中删除 null

How to remove null from a array using Jolt transformation

要求 - 我想使用 Jolt 规范从转换后的 Json 中删除 null 值。

输入-

{
  "parentResponse": {
    "parentHierarchy": [
      {
        "hierarchyType": "MAINTAINANCE",
        "parents": [
          {
            "level": "Test",
            "levelCode": "BO",
            "operationalId": "OP"
          },
          {
            "level": "Test",
            "levelCode": "BO",
            "operationalId": "OP"
          },
          {
            "level": "Contract",
            "levelCode": "CO",
            "operationalId": "DP"
          }
        ]
      }
    ]
  }
}

震动规格 - 如果 hierarchyType = "MAINTAINANCE" && parents[].levelCode = "CO" 然后复制 parents[].operationalId 到 output

[
  {
    "operation": "shift",
    "spec": {
      "parentResponse": {
        "parentHierarchy": {
          "*": {
            "hierarchyType": {
              "MAINTAINANCE": {
                "@(2,parents)": {
                  "*": {
                    "levelCode": {
                      "CO": {
                        "@(2,operationalId)": "request.common.hierarchyData.hrchyArray[&3].hrchyEntityId"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

实际输出-

{
  "request" : {
    "common" : {
      "hierarchyData" : {
        "hrchyArray" : [ null, null, {
          "hrchyEntityId" : "DP"
        } ]
      }
    }
  }
}

预期输出 -

{
  "request" : {
    "common" : {
      "hierarchyData" : {
        "hrchyArray" : [{
          "hrchyEntityId" : "DP"
        } ]
      }
    }
  }
}

您可以将额外的 modify-beta 转换与 recursivelySquashNulls 一起添加到当前规范,例如

{
  "operation": "modify-overwrite-beta",
  "spec": {
    "*": "=recursivelySquashNulls"
  }
}

编辑 : 不要添加上面的额外规范如果不是删除所有其他 null 其他可能存在的数组的元素。

而是将 "request.common.hierarchyData.hrchyArray[&3].hrchyEntityId" 部分替换为 "request.common.hierarchyData.hrchyArray[].hrchyEntityId"表示为最里面的叶节点。

通过使用 &3 替换,您可以上升到 parents 数组的级别,并且开始额外漫游数组的所有三个元素。