如何在Apache NiFi中按指定字符拆分JSON字符串值为多个子字段
解决方案
完全可以通过Jolt Transform实现你需要的拆分多个字段的需求,以下是可直接使用的配置和备选方案:
方案1:Jolt Transform 配置
使用两步操作即可完成转换,第一步拆分字符串为数组,第二步将数组元素映射到对应字段:
[ { "operation": "modify-overwrite-beta", "spec": { // 把adress字段按逗号拆分为数组,存入临时字段addressParts "addressParts": "=split(',', @(1,adress))" } }, { "operation": "shift", "spec": { // 保留原有字段 "id": "id", "name": "name", // 按数组索引映射到对应地址字段 "addressParts": { "0": "street", "1": "house number", "2": "city", "3": "country" } } } ]
你给出的示例输入经过上述配置转换后,即可完全匹配预期输出结果。如果后续需要调整拆分后的字段对应关系,只需要修改shift操作中数组索引对应的目标字段名即可。
方案2:Python 脚本实现(适合批量处理场景)
如果需要批量处理大量JSON文件,也可以用简单的Python脚本完成转换:
import json # 单条JSON转换示例,批量场景可修改为遍历文件读取 input_data = json.loads('{"id": 123,"name": "James","adress": "Oxford Street,21,London,England"}') # 拆分地址并写入新字段 address_items = input_data.pop("adress").split(",") input_data.update({ "street": address_items[0], "house number": address_items[1], "city": address_items[2], "country": address_items[3] }) # 输出结果 print(json.dumps(input_data, indent=2, ensure_ascii=False))
内容的提问来源于stack exchange,提问作者l rf
相关产品推荐
相关产品推荐

