如何通过Jolt实现非空firstName/lastName合并为displayName?
Jolt数据转换:动态生成displayName
核心逻辑
当firstName或lastName任一不为null时,将二者合并为displayName(仅拼接非空值,两个非空值之间用空格分隔);若两者均为null,则保留输入中的displayName原值,其余字段保持不变。
Jolt转换规范
[ { "operation": "shift", "spec": { "*": "&", // 保留所有原始字段 "firstName": "fn", "lastName": "ln" } }, { "operation": "modify-overwrite-beta", "spec": { "displayName": [ // 拼接非空的firstName和lastName,仅在两个值都非空时添加空格分隔 "=concat(@(1,fn != null ? @(1,fn) : '', @(1,ln != null ? ( @(1,fn) != null ? ' ' : '' ) + @(1,ln) : ''))", // 若拼接结果为空(说明两个字段都为null),则保留原displayName值 "=ifElse(@(1) == '', @(1,displayName), @(1))" ] } }, { "operation": "remove", "spec": { "fn": "", "ln": "" // 清理临时变量 } } ]
场景验证
场景1:firstName和lastName均非空
输入:
{ "displayName": "Old Display Name", "Comments": "Sample comment", "firstName": "Jane", "lastName": "Smith" }
输出:
{ "displayName": "Jane Smith", "Comments": "Sample comment" }
场景2:firstName为null,lastName非空
输入:
{ "displayName": "Old Display Name", "Comments": "Sample comment", "firstName": null, "lastName": "Smith" }
输出:
{ "displayName": "Smith", "Comments": "Sample comment" }
场景3:firstName和lastName均为null
输入:
{ "displayName": "Original Name", "Comments": "Sample comment", "firstName": null, "lastName": null }
输出:
{ "displayName": "Original Name", "Comments": "Sample comment" }
内容的提问来源于stack exchange,提问作者ayan_2587
相关产品推荐
相关产品推荐

