3

I have a JSON like

{
    "campaign_key": 316,
    "client_key": 127,
    "cpn_mid_counter": "24",
    "cpn_name": "Bopal",
    "cpn_status": "Active",
    "clt_name": "Bopal Ventures",
    "clt_status": "Active"
}

Expected output

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"
}

How do I acheive this by using NIFI? Thanks.

4

2 回答 2

6

您可以按照“用户”所说的去做。这种方法的不好之处在于,如果您的字段数量正在增加,那么您需要将这么多 JSON 路径表达式属性EvaluateJsonPath添加到ReplaceText.

相反,我建议将QueryRecordRecord 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 查询。可以在此处找到有关此处理器的更多详细信息

附加屏幕截图

在此处输入图像描述

在此处输入图像描述

于 2018-05-22T07:27:44.820 回答
5

卡尔提克,

使用EvaluateJsonPath处理器通过其键获取所有 json 值。

示例:$.campaign_keyfor 获取 compaign 键值和$.clt_namefor 获取 clt 名称。

像上面一样,你可以得到所有的 jsons。

然后使用 ReplaceText 处理器将单个 json 转换为两个 json。

{"Compaign_Key":${CompaignKey},...etc}
{"Clt_name":${clt_name}}

它将单个 json 转换为两个 json。

希望这会有所帮助,如果您有问题,请告诉我。

于 2018-05-22T06:50:18.367 回答