使用 jolt 从数组中删除 null

问题描述 投票:0回答:2

我在使用 jolt 从数组中删除空值时遇到一些问题,如下所述:

输入

{
  "userId": "1",
  "age": "20",
  "firstName": "firstname1",
  "lastname": "lastname1",
  "zipCode": "zipcode1",
  "street": "street1",
  "city": "city1",
  "country": "country",
  "gender": "gender1",
  "grade": "grade1",
  "birthday": "birthday1"
}

震动规格

[
  {
    "operation": "shift",
    "spec": {
      "userId": "ID",
      "age": "age",
      "firstName": "firstName",
      "lastname": "lastname",
      "gender": "gender",
      "grade": "grade",
      "birthday": "birthday",
      "street|city|zipCode|country": {
        "$": "address[#2].code",
        "@": "address[#2].value"
      }
    }
  }
]

输出

{
  "ID": "1",
  "age": "20",
  "firstName": "firstname1",
  "lastname": "lastname1",
  "gender": "gender1",
  "grade": "grade1",
  "birthday": "birthday1",
  "address": [ null, null, null, null, null, null, null,
    {
      "code": "street",
      "value": "street1"
    },
    {
      "code": "city",
      "value": "city1"
    },
    {
      "code": "zipCode",
      "value": "zipcode1"
    },
    {
      "code": "country",
      "value": "country"
    }
  ]
}

我得到了 @Barbaros 建议的一些解决方案,感谢他,如链接中所述 使用 Jolt 从 JSON 输出中删除空值

但仍在挣扎,任何帮助将不胜感激。

java json apache-nifi jolt
2个回答
1
投票

您可以在第一步中为键值对添加文字前缀,例如

adr_
,然后在最后一步中使用来区分其余属性,这些属性将由
"*":"&"
对表示,例如

[
  {
    "operation": "shift",
    "spec": {
      "userId": "ID",
      "*": "&",
      "street|city|zipCode|country": {
        "$": "adr_&.code",
        "@": "adr_&.value"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "adr_*": "address[]"
    }
  }
]

其中仅

"userId": "ID"
单独书写,以便根据需要重命名。

enter image description here


0
投票

输入 { “手术室列表”:[ 无效的, { “部门代码”:“111”, “部门名称”:“AAA” } ] }

预计收到

{ “手术室列表”:[

{
  "deptCode": "111",
  "deptName": "AAA"
}

] }

© www.soinside.com 2019 - 2024. All rights reserved.