如何用Jolt转换将嵌套对象空字符串替换为null并保留其他数据
正确的Jolt转换规则
要实现将hireDate为空字符串("")或空格(" ")时替换为null,同时保留所有其他键值对的需求,可采用shift+modify-overwrite-beta组合操作:
[ // 第一步:完整保留原有数据结构,避免丢失任何字段 { "operation": "shift", "spec": { "*": { "*": "[&1].&", "employees": { "*": "[&2].employees[&1].&" } } } }, // 第二步:处理hireDate的空值/空格替换逻辑 { "operation": "modify-overwrite-beta", "spec": { "*": { "employees": { "*": { "hireDate": ["=trim", "=isNull", null] } } } } } ]
规则说明
shift操作:
[&1].&负责保留根对象的所有非employees字段(比如示例里的"other data");[&2].employees[&1].&确保employees数组中的每个对象及其所有字段都被完整映射,不会丢失员工的其他属性。
modify-overwrite-beta操作:
- 先用
=trim去除hireDate值的前后空格,将原空格字符串(" ")转为空字符串; - 再用
=isNull判断处理后的值是否为空,若是则替换为null,否则保留处理后的原值。
- 先用
验证示例
输入:
[ { "companyName": "Tech Corp", "employees": [{ "id": 1, "name": "John Doe", "hireDate": "" }, { "id": 2, "name": "Jane Smith", "hireDate": " " }, { "id": 3, "name": "Bob Brown", "hireDate": "2023-01-01" }] } ]
转换后输出:
[ { "companyName": "Tech Corp", "employees": [ { "id": 1, "name": "John Doe", "hireDate": null }, { "id": 2, "name": "Jane Smith", "hireDate": null }, { "id": 3, "name": "Bob Brown", "hireDate": "2023-01-01" } ] } ]
内容的提问来源于stack exchange,提问作者Sean Millane
相关产品推荐
相关产品推荐

