写 YAML 的人大概都有过这种经历:配置要改一个嵌套字段,得先 parse 成 Map,一层层 get 下去,改完再 dump 回来。一次两次还行,项目里配置多了就有点烦了。

我自己做 Java 项目的时候,经常要处理 YAML 配置:合并环境配置、把嵌套配置拍平、模板里替换变量、上线前给敏感字段打码。SnakeYAML 本身只管 parse 和 dump,这些操作每次都得自己写。写多了就想干脆封装成一个库,于是就有了 sapera-yaml。

坐标在 Maven Central,直接拉:

<dependency>
    <groupId>cn.frostlock</groupId>
    <artifactId>sapera-yaml</artifactId>
    <version>0.1.0</version>
</dependency>

用起来大概是这样:

YamlDocument doc = SaperaYaml.create()
        .put("server.port", 8080)
        .put("server.hosts[0]", "a")
        .put("server.hosts[1]", "b");
String yaml = doc.toYaml();

路径直接写,中间节点自动建,不用再手动 new 一堆 HashMap。

目前有的功能:

  • 路径式增删改查,a.b[0].c 这种写法
  • 深度合并:两份配置合成一份,list 是替换还是拼接可选
  • 扁平化 / 反扁平化:嵌套配置拍平成 key-value,也能还原
  • 占位符替换:${env.PORT} 这种
  • 字段过滤和脱敏:导出配置前把 password 打码
  • diff:两份配置差在哪,一眼能看明白
  • 轻量校验:必填、类型、枚举
  • JavaBean 绑定:和 POJO 互转
  • 重复键检测:loadStrict,防止配置里藏着重复 key

Java 8 起步,依赖只有 SnakeYAML,体积不大。

仓库在 Gitee:https://gitee.com/Nicolas_Z_013/sapera-yaml

有 README 有 wiki,欢迎试用,遇到问题直接提 issue。