基于Jolt实现两种JSON输入的格式转换(含空值处理)
Jolt转换需求:处理两种JSON输入生成对应输出
输入示例
输入-1
{ "alert_array": { "alerts": [ { "id": "1234", "data": { "parameter": [ { "key": "level", "value": "93.5" } ] } } ] } }
输入-2
{ "alert_array": { "alerts": [ { "id": "1234", "data": {} } ] } }
预期输出
预期输出-1
{ "alertArray": [ { "id": "1234", "properties": [ { "key": "level", "value": "93.5" } ] } ] }
预期输出-2
{ "alertArray": [ { "id": "1234", "properties": [] } ] }
Jolt转换规则
使用以下Jolt规范可实现需求,无论输入中data是否包含parameter数组,都能保证properties始终为数组类型:
[ { "operation": "shift", "spec": { "alert_array": { "alerts": { "*": { "id": "alertArray[&1].id", "data": { "parameter": "alertArray[&2].properties" } } } } } }, { "operation": "default", "spec": { "alertArray": { "*": { "properties": [] } } } } ]
规则说明
- Shift操作:完成字段重命名与结构映射
- 将
alert_array.alerts数组映射为alertArray数组 - 保留每个告警项的
id字段 - 将
data.parameter映射为目标字段properties
- 将
- Default操作:处理
data为空的边界场景,当properties未被映射生成时,默认设置为空数组,确保输出格式统一
内容的提问来源于stack exchange,提问作者Neeraj
相关产品推荐
相关产品推荐

