json内容如何使用表达语言?
How to use expression language for json contents?
我尝试将 csv 转换为 json。
我的 CSV 数据如下..,
Top
Jun Sdas 123
Jul gh 456
Aug-16 Rav 789
Jan-16 Trai 767
现在我使用了以下处理器结构..,
GetFile-->InferredAvroSchema-->ConvertCSVToAvro-->ConvertAvroToJson-->PutFile.
下面json的结果。,
[
{"field_0": "Top", "field_1": "", "field_2": null},
{"field_0": "Jun", "field_1": "Sdas", "field_2": 123},
{"field_0": "Jul", "field_1": "gh", "field_2": 456},
{"field_0": "Aug-16", "field_1": "Rav", "field_2": 789},
{"field_0": "Jan-16", "field_1": "Trai", "field_2": 767}
]
现在我需要为 "field_0" 添加表达式语言,以便在值中不存在时添加 '-16'。
例如:"field_0" 在第 2 行有 "Jun"。现在我需要检查字段中是否存在“-16”,如果不存在则添加。
如何将nifi处理器中的表达式语言方法添加到json内容中?
还有什么办法吗?
感谢并接受任何帮助?
您可以选择多个选项来提供所需的功能。
仅使用提供的处理器,您可以使用 EvaluateJsonPath
or RouteOnContent
to detect if the desired key and value is present, and then use ReplaceText
or possibly JoltTransformJSON
to update the content to include your default value。看来您的流文件非常小,所以这应该不是问题,但请注意 JoltTransformJSON
不以流方式运行 ,因此对于大流文件,这会对内存消耗产生负面影响。
如果您对 Groovy/Ruby/Jython/Javascript/Lua 感到满意,您也可以使用 ExecuteScript
在一次操作中完成此操作。使用 Groovy 的内置 JSON 处理(快速将 JSON 块视为地图对象),您可以在一行中进行检测和默认填充,并将流文件内容写回非常容易地。 ExecuteScript
是一个非常有用且用途广泛的工具,以至于为每个问题都推荐它感觉像是在作弊,但在这种情况下,它确实可能是最简单的解决方案。
我尝试将 csv 转换为 json。
我的 CSV 数据如下..,
Top
Jun Sdas 123
Jul gh 456
Aug-16 Rav 789
Jan-16 Trai 767
现在我使用了以下处理器结构..,
GetFile-->InferredAvroSchema-->ConvertCSVToAvro-->ConvertAvroToJson-->PutFile.
下面json的结果。,
[
{"field_0": "Top", "field_1": "", "field_2": null},
{"field_0": "Jun", "field_1": "Sdas", "field_2": 123},
{"field_0": "Jul", "field_1": "gh", "field_2": 456},
{"field_0": "Aug-16", "field_1": "Rav", "field_2": 789},
{"field_0": "Jan-16", "field_1": "Trai", "field_2": 767}
]
现在我需要为 "field_0" 添加表达式语言,以便在值中不存在时添加 '-16'。
例如:"field_0" 在第 2 行有 "Jun"。现在我需要检查字段中是否存在“-16”,如果不存在则添加。
如何将nifi处理器中的表达式语言方法添加到json内容中?
还有什么办法吗?
感谢并接受任何帮助?
您可以选择多个选项来提供所需的功能。
仅使用提供的处理器,您可以使用 EvaluateJsonPath
or RouteOnContent
to detect if the desired key and value is present, and then use ReplaceText
or possibly JoltTransformJSON
to update the content to include your default value。看来您的流文件非常小,所以这应该不是问题,但请注意 JoltTransformJSON
不以流方式运行 ,因此对于大流文件,这会对内存消耗产生负面影响。
如果您对 Groovy/Ruby/Jython/Javascript/Lua 感到满意,您也可以使用 ExecuteScript
在一次操作中完成此操作。使用 Groovy 的内置 JSON 处理(快速将 JSON 块视为地图对象),您可以在一行中进行检测和默认填充,并将流文件内容写回非常容易地。 ExecuteScript
是一个非常有用且用途广泛的工具,以至于为每个问题都推荐它感觉像是在作弊,但在这种情况下,它确实可能是最简单的解决方案。