如何编写Jolt规范处理JSON:提取资源名与拆分Tags字段
Jolt转换规范实现方案
需求说明
- 从
ResourceId字段中提取斜杠分隔的最后一段内容,作为新字段Resourcename - 保留原始
Tags字段不变,同时从Tags的字符串内容中解析出Name和Owner两个独立字段
输入示例
[ { "ResourceId": "/subscriptions/bb842437aa4/resourceGroups/ECHLABHENKEL/providers/Microsoft.Compute/virtualMachines/pmoapps", "Tags": "Name\" : \"PMOapplication\",\"Owner\" : \"Breil sathish" }, { "ResourceId": "/subscriptions/bb842437aa4/resourceGroups/HCLTECHLABHENKEL/providers/Microsoft.Compute/virtualMachines/pmoapps", "Tags": "Name\" : \"PMOapplication\",\"Owner\" : \"Breil sathish1" } ]
期望输出示例
[ { "ResourceId": "/subscriptions/bb842437aa4/resourceGroups/ECHLABHENKEL/providers/Microsoft.Compute/virtualMachines/pmoapps", "Tags": "Name\" : \"PMOapplication\",\"Owner\" : \"Breil sathish", "Resourcename": "pmoapps", "Name": "PMOapplication", "Owner": "Breil sathish" }, { "ResourceId": "/subscriptions/bb842437aa4/resourceGroups/HCLTECHLABHENKEL/providers/Microsoft.Compute/virtualMachines/pmoapps", "Tags": "Name\" : \"PMOapplication\",\"Owner\" : \"Breil sathish1", "Resourcename": "pmoapps", "Name": "PMOapplication", "Owner": "Breil sathish1" } ]
Jolt规范
[ { "operation": "modify-overwrite-beta", "spec": { "*": { "Resourcename": "=split('/', @(1,ResourceId))[-1]", "tempTags": "=replaceAll(@(1,Tags), '[\" :]', '')", "tempTagsSplit": "=split(',', @(1,tempTags))", "Name": "=substringAfter(@(1,tempTagsSplit[0]), 'Name')", "Owner": "=substringAfter(@(1,tempTagsSplit[1]), 'Owner')" } } }, { "operation": "remove", "spec": { "*": { "tempTags": "", "tempTagsSplit": "" } } }, { "operation": "shift", "spec": { "*": { "*": "&" } } } ]
规范说明
- modify-overwrite-beta 阶段:
- 用
split('/', @(1,ResourceId))[-1]把ResourceId按斜杠拆分,直接取数组最后一个元素生成Resourcename - 先清理
Tags字符串里的引号、空格和冒号,再按逗号拆分成数组,分别提取Name和Owner的内容
- 用
- remove 阶段:删除临时生成的
tempTags和tempTagsSplit字段 - shift 阶段:确保所有原始字段和新增字段都被保留输出
内容的提问来源于stack exchange,提问作者Sathish
相关产品推荐
相关产品推荐

