我有一个类似
的JSON{
"campaign_key": 316,
"client_key": 127,
"cpn_mid_counter": "24",
"cpn_name": "Bopal",
"cpn_status": "Active",
"clt_name": "Bopal Ventures",
"clt_status": "Active"
}
预期输出
1st JSON:
{
"campaign_key": 316,
"client_key": 127,
"cpn_mid_counter": "24",
"cpn_name": "Bopal",
"cpn_status": "Active"
}
2nd JSON:
{
"clt_name": "Bopal Ventures",
"clt_status": "Active"
}
如何使用NIFI实现这一目标?感谢。
答案 0 :(得分:5)
你可以做'用户'所说的话。关于该方法的不太好的事情是,如果您的字段数量在增加,那么您需要将许多JSON路径表达式属性添加到EvaluateJsonPath
,然后在ReplaceText
中添加许多属性
相反,我建议使用QueryRecord
将Record Reader设置为JsonTreeReader,将Record Writer设置为JsonRecordSetWriter。并添加两个动态关系属性,如下所示:
json1 : SELECT campaign_key, client_key, cpn_mid_counter, cpn_name, cpn_status FROM FLOWFILE
json2 : SELECT clt_name, clt_status FROM FLOWFILE
此方法负责以JSON格式读取和写入输出。另外,如果您想添加更多字段,只需在SQL SELECT
语句中添加字段名称。
QueryRecord处理器允许您对FlowFile内容执行SQL查询。有关此处理器的更多详细信息,请参见here
附加屏幕截图
答案 1 :(得分:4)
KARTHIK,
使用EvaluateJsonPath
处理器通过使用其键来获取所有json值。
示例:$.campaign_key
用于获取共享密钥值,$.clt_name
用于获取clt名称。
就像上面一样,你可以得到所有的jsons。
然后使用ReplaceText Processor将单个json转换为两个jsons。
{"Compaign_Key":${CompaignKey},...etc}
{"Clt_name":${clt_name}}
它会将单个json转换为两个jsons。
希望这有用,如果您有问题,请告诉我。