apache-nifi - 在Nifi中修改JSON键值对

标签 apache-nifi jolt

我有传入的 JSON 数据行,例如,

{"signalName": "IU_BATT_ParkAssist", "msgId": 2268, "epoch": 1582322746, "usec": 376360, "vlan": "-1", "msgName": "EBS_Frame12", "vin": "000004", "value": 14.171869, "timestamp": 1582322746376}

我想要修改输出以产生,

{"IU_BATT_ParkAssist":14.171869, "msgId": 2268, "epoch": 1582322746, "usec": 376360, "vlan": "-1", "msgName": "EBS_Frame12", "vin": "000004", "timestamp": 1582322746376}

将 signalName 和 value 键组合起来形成一个新的键:值对,其中键是 signalName,值是值字段,"IU_BATT_ParkAssist":14.171869> 以及其他原始键、值对。

考虑到每行中的 signalName 字段都会动态变化,我如何在 Nifi 中实现这一点?

最佳答案

尝试使用以下规范:

[
  {
    "operation": "shift",
    "spec": {
      "@(1,value)": "@(2,signalName)",
      "*": "&"
    }
  },
  {
    "operation": "remove",
    "spec": {
      "signalName": "",
      "value": ""
    }
  }
]

shift操作中,我们将signalName和value结合起来。

删除操作中,我们将从 json 数据中删除signalName 和 value

输出:

{
  "IU_BATT_ParkAssist" : 14.171869,
  "msgId" : 2268,
  "epoch" : 1582322746,
  "usec" : 376360,
  "vlan" : "-1",
  "msgName" : "EBS_Frame12",
  "vin" : "000004",
  "timestamp" : 1582322746376
}

关于apache-nifi - 在Nifi中修改JSON键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60349637/

相关文章:

java - 作为服务与大型 java 程序交互?

apache - 我可以使用 Apache NIFI 将文件传输到 HDFS 系统吗?

apache-kafka - Spark Streaming 与 Nifi

ssl - 使用 SSL 保护 Nifi

java - 如何使用 Jolt 规范将 Json 转换为 Json?

json - Jolt 将对象列表转换为数组

java - 如何从 maven Central 构建 nifi 处理器 nar 文件和依赖项

java - 如何在 Jolt Transformation 中循环时展平对象数组?

java - 如何使用 Bolt 使用 Json 进行转换?

java - 尽管我们的基准程序每秒创建数百万个对象,但日志中报告的垃圾收集很少