如何用JOLT规范移除payload.parameters.name的固定前缀?
正确JOLT配置:移除参数name字段的固定前缀
需求说明
给定输入JSON,需要移除payload.parameters数组中每个对象name字段的固定前缀a.b.c.d e.=f+g-h.i.j.,保留剩余部分,其余字段保持原样。
正确JOLT规范
[ { "operation": "modify-overwrite-beta", "spec": { "payload": { "parameters": { "*": { "name": "=replaceFirst('a\\.b\\.c\\.d e\\.=f\\+g-h\\.i\\.j\\.', '')" } } } } } ]
配置解释
- 操作类型:
modify-overwrite-beta用于修改指定字段的值,同时保留原有JSON结构,不会丢失其他字段 - 路径匹配:
payload.parameters.*匹配parameters数组中的每一个元素,确保批量处理所有参数对象 - 字符串替换:
=replaceFirst('正则表达式', '')调用JOLT内置的字符串替换函数,把匹配到的固定前缀替换为空字符串。注意正则表达式中需要对特殊字符(.、+、-)进行转义(用\\),避免被正则引擎误解析
验证结果
输入JSON
{ "payload": { "version": "1", "parameters": [ { "name": "a.b.c.d e.=f+g-h.i.j.1_2.dist [km]", "value": 0, "quality": false, "timestamp": 1688997493042 }, { "name": "a.b.c.d e.=f+g-h.i.j.1_2.time [sec]", "value": 0, "quality": false, "timestamp": 1688997493059 } ], "eventType": "EVENT", "eventTime": 1690452924457 } }
输出JSON
{ "payload": { "version": "1", "parameters": [ { "name": "1_2.dist [km]", "value": 0, "quality": false, "timestamp": 1688997493042 }, { "name": "1_2.time [sec]", "value": 0, "quality": false, "timestamp": 1688997493059 } ], "eventType": "EVENT", "eventTime": 1690452924457 } }
内容的提问来源于stack exchange,提问作者kshitiz raj
相关产品推荐
相关产品推荐

