将Python字典转YAML时保留键"/"的双引号(适配Swagger2.0)
解决PyYAML转储时仅为键"/"保留双引号的问题
要实现只给键"/"保留双引号、其余键不受影响的效果,可通过自定义PyYAML的字典表示器来针对性处理,具体步骤如下:
- 编写自定义表示器函数,检测到键为
"/"时强制用双引号包裹输出,其他键遵循默认处理逻辑; - 将该表示器注册到PyYAML系统中;
- 使用修改后的YAML环境转储字典。
完整代码示例:
import yaml from yaml.representer import SafeRepresenter def represent_dict_with_quoted_root_key(dumper, data): items = [] for key, value in data.items(): if key == "/": # 对键"/"强制使用双引号包裹 key_node = dumper.represent_scalar('tag:yaml.org,2002:str', key, style='"') else: # 其他键保持默认输出格式 key_node = dumper.represent_data(key) value_node = dumper.represent_data(value) items.append((key_node, value_node)) return yaml.nodes.MappingNode('tag:yaml.org,2002:map', items) # 注册自定义表示器到SafeDumper yaml.add_representer(dict, represent_dict_with_quoted_root_key, Dumper=yaml.SafeDumper) # 原始字典数据 path_dict = { "path":{ "/": { "get": { "summary": "Root", "operationId": "root__get" } } } } # 转储并输出YAML yaml_output = yaml.dump(path_dict, Dumper=yaml.SafeDumper) print(yaml_output)
运行后得到的YAML结果:
path: "/": get: summary: Root operationId: root__get
该方案精准实现了仅为键"/"添加双引号的需求,同时不干扰其他键的正常输出,完全满足Swagger2.0规范要求。
内容的提问来源于stack exchange,提问作者Shengy90
相关产品推荐
相关产品推荐

