当前位置: 首页 > 知识库问答 >
问题:

修改Nifi中的JSON键值对

微生新翰
2023-03-14
{"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字段都在动态变化,那么如何在Nifi中实现这一点呢?

共有1个答案

王凯旋
2023-03-14

尝试使用以下规范:

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

在shift操作中,我们将signalname和value组合在一起。

在remove操作中,我们从JSON数据中删除signalname和value

{
  "IU_BATT_ParkAssist" : 14.171869,
  "msgId" : 2268,
  "epoch" : 1582322746,
  "usec" : 376360,
  "vlan" : "-1",
  "msgName" : "EBS_Frame12",
  "vin" : "000004",
  "timestamp" : 1582322746376
}
 类似资料:
  • 我想在NIFI中使用Jolt处理器实现以下JSON转换 是否有一种方法可以使用现有的Jolt操作来实现这一点,或者我需要编写自定义操作? 谢了。

  • 问题内容: 我有一个想要修改特定值的json,但是终端总是显示带有修改后值的json,但实际上并不会更改特定文件中的值。样本json: 我想更改文件本身中的address的值,但到目前为止,我一直无法更改。我尝试使用: 但这没用。有什么建议? 问题答案: AFAIK 不支持就地编辑,因此您必须先重定向到一个临时文件,然后再用它替换原始文件,或者使用moreutils包中的实用程序,如下所示: 还有

  • 你可以使用点号(.)来修改 JSON 对象的值。如: myObj.zhihu = "https://www.zhihu.com/people/leiqikui/"; 你可以使用中括号([])来修改 JSON 对象的值。如: myObj["zhihu"] = "https://www.zhihu.com/people/leiqikui/";

  • 问题内容: 是否有可能改变的,从命令行JSON文件? 例如,在package.json中: 更改 至 问题答案: 一种实现方法是使用“ json” npm软件包,例如: 另一种方法是使用jq CLI,例如:

  • 可以使用索引值来修改JSON 数组的值。如: myObj.sites[1] = "Github";

  • 我将json数据流(从ConvertAvroToJSON处理器驱动)转义为: 我只需要“JSON”值,如下所示[unescapeJson之后]: $...*