Apache nifi apachenifi中关于unescapeJson的问题
我正在使用ApacheNIFI转换一些数据 我有一条线索:他没有说“S\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,和unescapeJson()给我这个结果:他没有说“S”top 是这样吗?我的预期结果是他没有说“S \”top!“ 如果函数是这样设计的,那么如何才能得到预期的结果 例如:Apache nifi apachenifi中关于unescapeJson的问题,apache-nifi,Apache Nifi,我正在使用ApacheNIFI转换一些数据 我有一条线索:他没有说“S\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,和unescapeJson()给我这个结果:他没有说“S”top 是这样吗?我的预期结果是他没有说“S \”top!“ 如果函数是这样设计的,那么如何才能得到预期的结果 例如: GetFile processor只是读取了一个包含以下内容的文件:他没有说,\\\\\\\\\\\\\\\\\\”通过将R
GetFile processor只是读取了一个包含以下内容的文件:他没有说,\\\\\\\\\\\\\\\\\\”通过将ReplaceTextReplacement Value属性更改为just
${'$1'}
,似乎可以找到解决方法。在我的示例中,这产生了所需的输出,他没有说“S\”top!“
我还不完全理解为什么,但我相信这与将搜索的输出作为replace的正则表达式进行评估有关,其中反斜杠是在应用unescapeJson()
之前进行评估的,因此它最终是多余的。例如,如果将Replacement Value设置为just$1
,则不会发生这种情况
更新 我把上面的顺序搞错了,决议的顺序如下:
他没有说“S\\\\\”top!\“
${'$1':unescapeJson()}
计算为:他没有说“S\”top!“
他没有说“S”top!”
因此,unescapeJson()正在按预期工作,而您不期望的行为是,剩余的反斜杠作为的工件在替换中丢失。通过将ReplaceText替换值属性更改为just
${'$1'}
似乎可以解决此问题。在我的示例中,这产生了所需的输出,他没有说“S\”top!“
我还不完全理解为什么,但我相信这与将搜索的输出作为replace的正则表达式进行评估有关,其中反斜杠是在应用unescapeJson()
之前进行评估的,因此它最终是多余的。例如,如果将Replacement Value设置为just$1
,则不会发生这种情况
更新 我把上面的顺序搞错了,决议的顺序如下:
他没有说“S\\\\\”top!\“
${'$1':unescapeJson()}
计算为:他没有说“S\”top!“
他没有说“S”top!”
因此,unescapeJson()正在按预期工作,而您不期望的行为是,剩余的反斜杠作为的工件在replace中丢失。能否共享您使用的确切表达式语言语句,并澄清转义的JSON是如何传入的?重现这个问题会很有帮助。谢谢你的回复。我已经编辑了我的问题并上传了一些截图。你能分享你正在使用的确切表达式语言语句并澄清转义的JSON是如何传入的吗?重现这个问题会很有帮助。谢谢你的回复。我编辑了我的问题并上传了一些截图。我发现了更多,但底线可能是对JSON正文内容使用特定于JSON的内容,如EvaluateJsonPath。我发现了更多,但底线可能是对JSON正文内容使用特定于JSON的内容,比如EvaluateJsonPath。