【问题标题】:Unicode escape sequence in NIFI flow to convert JSON to XMLNIFI 流中的 Unicode 转义序列,用于将 JSON 转换为 XML
【发布时间】:2020-05-27 17:51:59
【问题描述】:

使用GenerateTableFetchExecuteSQLSplitAvroConvertAvroToJSON 处理器的序列,我正在从具有以下内容的 MySql 视图中获取 JSON 字段:
“使用了 7 分制(1=\u201C 根本没有\u201D 到 7=\u201C 非常\u201D)..”

如果我在队列中查看文件的内容并选择选项formatted(而不是original),我会得到:
“使用了 7 分制(1=“一点也不”到 7=“非常”)……”

这个未转义的字符串是我想存储在 NoSQL 数据库中的。 这个内置的 NIFI 查看器是否使用了我可以使用的功能?

我之所以问这个问题是因为在流程的后期,我将 JSON 包装在一个 xml 标记中,以便使用 XSLT 样式表将其转换为 XML。但我在转换后得到了 unicode 字符,并想取回原始的未转义 JSON(在我将其存储在 NoSQL 数据库中之前)。

【问题讨论】:

  • 我试图避免使用 FlowFile 属性。我想处理内容。
  • \u201C 是字符串中的 json 编码字符,表示 。因此 json 格式的 nifi-viewer 将其解码以显示。
  • @daggett 谢谢,从这个评论和安迪的回答来看,方向似乎是我需要自己提供转换映射......还有许多其他出现的引号和破折号由于作者的要求,我需要保留。
  • 但这是一个正确的 json 值。为什么需要更换它?你打算将 json 存储到 nosql 还是这个 json 中的文本值?
  • @daggett 字符串 \u201C 显示在 NoSQL 内容中...我正在使用来自 stackoverflow.com/questions/13007280/… 的 XSLT 转换(支持 null 的转换),我怀疑它正在转换 unicode 序列到带有字符 \u201C 的文字字符串,否则 NoSQL db 将能够正确地对其进行转义

标签: json unicode escaping apache-nifi


【解决方案1】:

您可以使用 ReplaceText 处理器将流文件内容中的所有字节序列 (\u201C) 实例替换为 。如果您需要前导引号和尾引号不同,可以使用ReplaceTextWithMapping 将不同的Unicode 代码点与特定的替换值相关联。如果你不这样做,你可以使用通用的ReplaceText,匹配\u201[CD],然后用"替换它。

【讨论】:

  • 谢谢安迪。我将使用带有 Python 脚本的 ExecuteScript 处理器来全局替换我可以识别的所有 unicode 转义序列。我真的不喜欢采用这种方法,因为它可能相当乏味。我希望借用 NIFI 查看器的服务。
  • 安迪,您的回答适合我的问题。因为我应该更具体地提出我的问题,所以我指的是任何来到这里的人,我对上面的 daggett 的最后评论。
猜你喜欢
  • 1970-01-01
  • 2011-05-29
  • 2020-07-09
  • 2020-03-15
  • 2018-02-15
  • 1970-01-01
  • 2014-08-15
  • 2023-02-06
  • 2022-01-14
相关资源
最近更新 更多