Jolt spec编写求助:实现JSON转换的字段拼接、默认值添加等需求
可用Jolt转换Spec
[ // 第一步:字段映射与结构初始化 { "operation": "shift", "spec": { "Body": { "*": { "*": { "$": "request.auth.basic[&2].key", "@(1,&)": "request.auth.basic[&2].value" } } }, "Headers": { "*": { "*": { "$": "request.header[&2].key", "@(1,&)": "request.header[&2].value" } } }, "Host": { "*": { "HOST_NAME": { "@(1,HOST_NAME)": "hostName" }, "PORT": { "@(1,PORT)": "port" } } } } }, // 第二步:添加所有固定默认值 { "operation": "default", "spec": { "name": "Main API - BASICAUTH", "request": { "method": "GET", "auth": { "type": "basic" }, "auth.basic[]": { "*": { "type": "string" } }, "header[]": { "*": { "type": "text" } } } } }, // 第三步:拼接生成完整url { "operation": "modify-overwrite-beta", "spec": { "request.url.raw": "=concat(@(1,hostName), '/v', @(1,port), '/some-default-value')" } }, // 第四步:整理最终外层结构 { "operation": "shift", "spec": { "@": "templateConfig.commonClientConfig.item[0]" } }, // 第五步:清理临时字段 { "operation": "remove", "spec": { "templateConfig": { "commonClientConfig": { "item": { "*": { "hostName": "", "port": "" } } } } } } ]
对应需求实现说明
- 为现有值拼接新内容:第三步
modify-overwrite-beta操作使用concat函数,按规则拼接域名、带v前缀的端口、固定后缀,完成url字段的拼接 - 拼接后的值移动到目标位置:第一步shift操作把输入字段映射到对应中间位置,第四步shift直接套入最终外层层级,所有值自动落到预期位置
- 输入不存在指定键时添加默认键值对:第二步
default操作统一添加所有固定值,包括接口名称、请求方法、auth类型、字段类型标识,输入中不存在的键会自动补充 - JSON对象赋值到正确数组:第四步shift指定
item[0],把整个请求配置对象放入item数组的第一个元素,符合预期结构
内容的提问来源于stack exchange,提问作者Dwarrior
相关产品推荐
相关产品推荐

