Jolt字符串转整数空值处理:如何移除返回结果中的空对象
解决方案
你遇到的空对象问题核心是操作顺序不合理:先执行字段映射再做类型转换时,modify-overwrite-beta 会自动为spec中声明的嵌套路径创建父节点,即使对应子字段没有实际值,也会生成空的父级对象。
调整操作顺序即可解决,先在原始数据路径完成类型转换,再执行字段映射,原始请求中不存在的字段不会触发后续路径创建,自然不会生成空对象。调整后的完整Spec如下:
[ { "operation": "modify-overwrite-beta", "spec": { "data": { "first": "=toInteger", "second": "=toInteger" } } }, { "operation": "shift", "spec": { "data": { "first": "datas.firstTag", "second": "datas.second.secondTag" } } }, { "operation": "modify-overwrite-beta", "spec": { "*": "=recursivelySquashNulls" } } ]
逻辑说明
- 第一步先对原始
data下的字段做类型转换,原始请求中不存在的字段不会被创建,也不会生成多余路径 - 第二步执行字段映射,只有原始请求中存在的字段才会触发对应路径的写入,不存在的
second字段不会创建datas.second结构 - 最后一步递归清除null值,不会产生多余空对象
该方案在输入包含所有字段时输出和原有逻辑完全一致,缺少对应字段时会自动跳过对应路径,不会生成空对象。
内容的提问来源于stack exchange,提问作者Chethan
相关产品推荐
相关产品推荐

