MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

YAML 列表配置结构优化指南(yaml配置的优势)

2025-05-03 14:26 huorong 精选文章 6 ℃ 0 评论


在 YAML 配置设计中,针对"列表项存在基础形态和扩展形态"的常见场景,我们提供三种结构化方案及其处理逻辑:

方案一:全量映射格式(显式冗余)

ext:
  - name: bcmath
    option: []  # 显式声明空列表
  - name: curl
    option: []
  - name: gd
    option:
      - with-freetype
      - with-jpeg
      - with-webp

处理优势:

  • 数据结构完全统一,无需转换逻辑
  • 可直接使用 yq '.ext' <<< "$yaml" 提取

适用场景:

强类型系统对接或需要严格数据校验的环境

方案二:智能省略格式(条件补全)

ext:
  - name: bcmath # 省略空属性
  - name: curl
  - name: gd
    option:
      - with-freetype
      - with-jpeg
      - with-webp

数据查询:

yq '.ext | map(with( select( has("option") | not); .option=[] ))' <<< "$yaml"

实现原理:

通过空值检测自动补全默认属性,适合属性存在默认值的场景

方案三:混合结构格式(语法糖优化)

ext:
  - bcmath         # 字符串简写形式
  - name: curl     # 省略空属性
  - name: gd       # 完整映射形式
    option:
      - with-freetype
      - with-jpeg
      - with-webp

统一化处理命令:

yq '.ext | map(
      with( select(type == "!!str"); . |= { "name": . } )
      | .option |= ( . // [] )
    )' <<< "$yaml"

核心优势:

在保持数据可读性的同时,极大减少样板代码

总结

混合结构格式兼容前两种模式,通过类型检测(!!str/!!map)和空值合并运算符(//)实现统一处理,最终输出标准数据结构。

Tags:yaml map

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言