You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JOLT Spec后续问询:将指定标签转换为目标键值对结构

JOLT转换方案:过滤指定标签并重构键值对结构

以下是针对需求的完整JOLT转换方案,实现过滤TAG_VM、TAG_HOST标签,并将剩余标签转换为指定键值对结构:

输入JSON

{
  "list": [
    {
      "tags": [
        {
          "scope": "",
          "tag": "TAG_VM"
        },
        {
          "scope": "",
          "tag": "TAG_HOST"
        },
        {
          "scope": "",
          "tag": "TAG_ROLE_DNS"
        },
        {
          "scope": "",
          "tag": "TAG_ROLE_AD"
        },
        {
          "scope": "",
          "tag": "TAG_USER_INSIDE"
        },
        {
          "scope": "",
          "tag": "TAG_USER_OUTSIDE"
        },{
          "scope": "",
          "tag": "TAG_INTERNET_TRUE"
        }
      ]
    }
  ],
  "result_count": 1,
  "sort_by": "name"
}

期望输出

{
  "role1" : "DNS",
  "role2" : "AD",
  "user1" : "INSIDE",
  "user2" : "OUTSIDE",
  "internet" : "TRUE"
}

JOLT转换规格

[
  // 过滤掉TAG_VM和TAG_HOST,保留其余标签到filtered_tags数组
  {
    "operation": "shift",
    "spec": {
      "list": {
        "*": {
          "tags": {
            "*": {
              "tag": {
                "TAG_VM": null,
                "TAG_HOST": null,
                "*": {
                  "@(2)": "filtered_tags[]"
                }
              }
            }
          }
        }
      }
    }
  },
  // 拆分tag字符串为数组,方便提取类型和值
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "filtered_tags": {
        "*": {
          "tag": "=split('_', @(1,tag))"
        }
      }
    }
  },
  // 按类型分组,生成带序号的键名
  {
    "operation": "shift",
    "spec": {
      "filtered_tags": {
        "*": {
          "tag": {
            "2": {
              "*": {
                "@(3,tag[3])": "&1&(4,count(&1))"
              }
            }
          }
        }
      }
    }
  },
  // 将所有键名转为小写
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=toLower(@(1))"
    }
  },
  // 处理internet的特殊情况,去掉序号
  {
    "operation": "shift",
    "spec": {
      "internet1": "internet",
      "*": "&"
    }
  }
]

转换步骤说明

  1. 标签过滤:通过shift操作直接丢弃不需要的标签,把符合条件的标签收集到filtered_tags数组中。
  2. 字符串拆分:利用split('_')把每个标签拆分成数组,比如TAG_ROLE_DNS会被拆成["TAG","ROLE","DNS"],方便后续提取类型和具体值。
  3. 键名生成:根据拆分后的类型字段(比如ROLE、USER),用count(&1)统计同类型标签的数量,自动生成带序号的键名(如role1、user2),同时把对应的值提取出来。
  4. 格式调整:先把所有键名转为小写,再单独将internet1重命名为internet,完全匹配期望的输出格式。

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:15:56