Swagger 自定义标签删除 Python

Swagger Custom Tag Removal Python

我有一个 swagger json 文件。示例:

{
  "swagger": "2.0",
  "tags": [
  {
    "name": "Tag1"
  },
  {
    "name": "Tag2"
  },
  {
    "name": "Tag3"
  },
  {
    "name": "Tag4"
  }
],
"paths": {
  "/api/v1/entities/{entityId}/status": {
    "post": {
      "tags": [
        "Tag1",
        "Tag3"
      ],
      .
      .
      .
    }
    "get": {
      "tags": [
        "Tag1",
        "Tag3"
      ],
      .
      .
      .
    }
  },
  "/api/v1/entities": {
    "post": {
      "tags": [
        "Tag2",
        "Tag3"
      ]
      .
      .
      .
    }
  }
}

我想从顶级标签列表和所有单独的路径中删除列表中的标签,例如:["Tag3", "Tag5"]。

您可以迭代 JSON 两次。 第一次迭代并检查哪些标签保存为列表(例如将它们存储在列表中) 然后在第二次迭代中删除出现在您保存的列表中的每个标签

简单的迭代和过滤:

updated_tags = [d for d in tags if d['name'].upper() not in (tag.upper() for tag in REMOVE_TAGS)]
dict['tags'] = updated_tags
paths = shell_json['paths']
for path, httpMethods in paths.items(): 
    for httpMethod, data in httpMethods.items():
        tags = data['tags']
        data['tags'] = [x for x in tags if x not in REMOVE_TAGS]