Apache nifi 如何使用NiFi将字符串转换为JSON数组

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'

在NiFi中,我正在处理包含以下属性的流文件:

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.use
json.dumps(…)
才能将python数据转换为json格式的字符串谢谢,我使用了你的解决方案和@dagett提出的解决方案。我将Python脚本更改为将
json.dumps(…)
设置为属性值,然后将
ReplaceText
Replacement value={“我的数组”:${my_数组}}
放在一起,这确实有效,感谢您的提示。NiFi没有在AttributesToJson处理器中正确格式化JSON列表,而是将它们转换为字符串,这很糟糕。