You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NiFi UpdateRecord使用escapeJson转换JSON字段报错如何解决?

NiFi UpdateRecord使用escapeJson新增字符串字段报错解决方案

根因说明

这个问题不是NiFi本身的缺陷,错误日志明确提示类型不匹配:你给personStringified字段定义的类型是Record(对象类型),但escapeJson函数输出的结果是字符串类型,序列化时无法将字符串转换为Record类型,因此抛出异常。

修复步骤

  • 第一步:调整字段类型定义
    不管你使用的是Avro Schema、JSON Schema还是隐式推断Schema,都需要显式将新增的personStringified字段类型指定为STRING,不能是OBJECT/RECORD类型。如果使用JSON读写器开启了Schema推断,建议关闭推断,改用显式Schema配置。
  • 第二步:修正UpdateRecord处理器配置
    新增属性配置如下:
    • 键:/personStringified
    • 值:escapeJson(toString(/person))
      部分NiFi版本中escapeJson仅支持字符串类型入参,因此先用toString()将person对象转换为字符串后再做转义处理。
  • 第三步:验证输出
    配置正确时,处理后的输出结果如下:
{
  "test": 123,
  "person": {
    "age": 36
  },
  "personStringified": "{\"age\":36}"
}

替代方案

如果UpdateRecord配置依然不生效,可以使用JoltTransformJSON处理器实现相同需求,配置的Jolt规范如下:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "personStringified": "=toString(@(1,person))"
    }
  }
]

该方案不需要额外配置Schema,直接基于JSON结构做转换,适配性更强。

内容的提问来源于stack exchange,提问作者oceansize

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:03