如何在 Apache Nifi 中按字符将 json 字符串值拆分为一些子字符串

How to split a json string value by character into some substrings in Apache Nifi

我有一个 json 文件,如下图所示,我想用一个字符(例如逗号)拆分键 'adress' 的值:

{
  "id": 123,
  "name": "James",
  "adress": "Oxford Street,21,London,England"
}

并将其转换为以下内容(-> 用逗号将地址字段拆分为这些字段):

{
  "id": 123,
  "name": "James",
  "street": "Oxford Street",
  "house number": "21",
  "city": "London",
  "country": "England"
}

我在互联网上找到了一个解决方案 (http://ostack.cn/?qa=94733/),其中有人将他们的属性分成 2 key/values(使用 jolt-processor),它对我也有效,但对更多人无效比这个分裂。

处理器可以是 'Jolt Transform' 或任何我可以用来编辑 json 的处理器,就像上面的模式一样。

感谢卢卡斯的帮助

您可以在 JoltTransformJSON 中使用 split 函数以及 modify-overwrite-beta 规范处理器如

[
  {
    "operation": "shift",
    "spec": {
      "@(0,adress)": "adr",
      "*": "&"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "adr": "=split(',', @(1,&))",
      "street": "@(1,adr[0])",
      "house number": "@(1,adr[1])",
      "city": "@(1,adr[2])",
      "country": "@(1,adr[3])"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "adr": "",
      "adress": ""
    }
  }
]

其中 shift 规范代表生成要通过使用 splitremove[=24= 进行处理的数组 (adr) ] 用于删除不需要的键值对。