基于NiFi的JOLT转换:将前缀式JSON转为嵌套结构
NiFi JOLT 转换:带前缀属性转嵌套对象
示例输入JSON
假设你的根层级数组输入JSON如下:
[ { "id": 1, "user_name": "张三", "user_age": 28, "addr_street": "XX街道", "addr_city": "北京", "addr_zip": "100000" }, { "id": 2, "user_name": "李四", "user_age": 32, "addr_street": "YY大道", "addr_city": "上海", "addr_zip": "200000" } ]
期望输出JSON
目标嵌套结构:
[ { "id": 1, "user": { "name": "张三", "age": 28 }, "address": { "street": "XX街道", "city": "北京", "zip": "100000" } }, { "id": 2, "user": { "name": "李四", "age": 32 }, "address": { "street": "YY大道", "city": "上海", "zip": "200000" } } ]
正确的JOLT转换规则
使用shift类型的JOLT规范,通过前缀匹配完成属性映射:
[ { "operation": "shift", "spec": { "*": { "id": "[&1].id", "user_*": "[&1].user.&(0,1)", "addr_*": "[&1].address.&(0,1)" } } } ]
规则说明
*遍历根数组中的每个元素[&1]保留当前数组元素的索引,保证输出仍为数组结构user_*匹配所有以user_开头的属性,&(0,1)提取前缀后的部分作为嵌套对象的键addr_*同理,将对应属性映射到address嵌套对象中
注意事项
- 如果前缀与属性名用下划线以外的分隔符(比如
.),需要调整&(0,1)的索引参数,例如分隔符为.时改为&(0,2) - 确保NiFi的JOLT处理器选择的是
shift类型的转换规范
内容的提问来源于stack exchange,提问作者Filipe Miguel Ferreira
相关产品推荐
相关产品推荐

