如何在属性层级将JSON对象转换为JSON字符串(NiFi场景)
将NiFi属性中的JSON对象转换为JSON字符串
已通过EvaluateJsonPath处理器将目标JSON数组读取到属性source_data中,以下是几种在属性层级将其转换为JSON字符串的方法:
方法1:使用UpdateAttribute处理器(推荐)
通过NiFi表达式语言的jsonEncode()函数直接转换:
- 添加UpdateAttribute处理器到流程中
- 添加一个新属性(可覆盖原
source_data,也可新建如source_data_str) - 属性值设置为:
${source_data:jsonEncode()}
该函数会自动将属性中存储的JSON对象序列化为标准JSON字符串。
方法2:重新配置EvaluateJsonPath(从源头解决)
如果还未完成EvaluateJsonPath的最终配置,可直接在读取时获取JSON字符串:
- 打开EvaluateJsonPath处理器配置界面
- 设置Return Type为
JSON String - 路径使用
$(读取整个JSON数组),目标属性设为source_data
这样读取到属性中的内容直接就是JSON字符串,无需后续转换。
方法3:使用ExecuteScript处理器(自定义脚本)
如果需要更灵活的处理,可通过Groovy脚本实现:
- 添加ExecuteScript处理器
- 选择脚本语言为
Groovy - 输入以下脚本:
def sourceData = attributes.get("source_data") if (sourceData != null) { def jsonBuilder = new groovy.json.JsonBuilder(sourceData) attributes.put("source_data_str", jsonBuilder.toString()) }
脚本会将source_data属性中的JSON对象转换为字符串,并存储到新属性source_data_str中。
内容的提问来源于stack exchange,提问作者dd619
相关产品推荐
相关产品推荐

