JOLT转换需求:根据detail字段值动态映射updating_field
JOLT转换解决方案
针对需求,我们可以通过Shift + Default两个JOLT操作组合实现,具体规则如下:
JOLT转换规范
[ { "operation": "shift", "spec": { "channel": { "detail": { "*": { "@(2,detail)": "channel.updating_field" } } } } }, { "operation": "default", "spec": { "channel": { "updating_field": "@(2,updating_field)" } } } ]
规则说明
Shift操作:
- 仅当
channel.detail为非空、非null的有效值时,*会匹配该值,并将channel.detail的内容映射到channel.updating_field。 - 如果
channel.detail是null、空字符串或不存在,Shift操作不会生成channel.updating_field字段。
- 仅当
Default操作:
- 当Shift操作未生成
channel.updating_field时,会自动将根节点的updating_field值填充到channel.updating_field中。
- 当Shift操作未生成
验证示例
- 示例1输入处理后:因为
channel.detail是null,Shift无输出,Default将根节点的"ACCEPT"赋值给channel.updating_field,得到预期输出。 - 示例2输入处理后:
channel.detail为有效值,Shift直接将其映射到channel.updating_field,Default因字段已存在不生效,得到预期输出。
内容的提问来源于stack exchange,提问作者Szymon
相关产品推荐
相关产品推荐

