Apache nifi 如何使用NiFi将字符串转换为JSON数组
在NiFi中,我正在处理包含以下属性的流文件:Apache nifi 如何使用NiFi将字符串转换为JSON数组,apache-nifi,apache-minifi,Apache Nifi,Apache Minifi,在NiFi中,我正在处理包含以下属性的流文件: Key: 'my_array' Value: '[u'firstElement', u'secondElement']' 我希望在此数组上拆分flowFile,以分别处理每个元素(然后合并)。我尝试使用SplitJson处理器,但它需要JSON内容才能操作,所以我在它之前使用了AttributesToJSON。不幸的是,生成的流文件的内容是: {"my_array": "[u'firstElement', u'secondElement'
Key: 'my_array'
Value: '[u'firstElement', u'secondElement']'
我希望在此数组上拆分flowFile,以分别处理每个元素(然后合并)。我尝试使用SplitJson
处理器,但它需要JSON内容才能操作,所以我在它之前使用了AttributesToJSON
。不幸的是,生成的流文件的内容是:
{"my_array": "[u'firstElement', u'secondElement'"}
我收到了错误
$['my_array']的计算值[u'firstElement',u'secondElement']不是JSON数组兼容类型,无法拆分
是否可以将
my_array
字符串转换为正确的JSON数组?我需要使用ExecuteScript
还是有更简单的方法?如何使用的替换策略始终替换和替换值的${my_array}
,然后拆分JSON
?
这将用此属性的值替换流文件的内容,然后您可以在其上拆分json。假设我想要字符串:“Hashtags”:“['tag1','tag2']”(作为Nifi中生成的json的一部分),将其更改为:“Hashtags”:['tag1','tag2']
我所做的是:
我将ReplaceText与替换策略:Regex Replace
和替换值:Regex表达式一起使用。这将用该属性的值替换FlowFile的匹配内容,然后您可以继续处理。该[u'firstElement',u'secondElement']
没有有效的json格式。我认为这是一种python格式。是的,这些值来自python,但我认为主要的问题是使用带有双引号的“[u'firstElement',u'secondElement']”而不是[u'firstElement',u'secondElement']
,它只是一个字符串。不带-不是有效的json。您能从python生成json吗?我试图将其转换为python中的列表,但它导致错误org.python.core.PyList无法转换为java.lang.String
,因此python脚本似乎必须返回String.usejson.dumps(…)
才能将python数据转换为json格式的字符串谢谢,我使用了你的解决方案和@dagett提出的解决方案。我将Python脚本更改为将json.dumps(…)
设置为属性值,然后将ReplaceText
与Replacement value={“我的数组”:${my_数组}}
放在一起,这确实有效,感谢您的提示。NiFi没有在AttributesToJson处理器中正确格式化JSON列表,而是将它们转换为字符串,这很糟糕。