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

如何使用Java SnakeYAML生成包含嵌套子字段的YAML配置文件

解决方案

SnakeYAML 会直接将 Java 中的嵌套 Map 结构序列化为 YAML 的嵌套层级结构,你之前输出扁平化结构是因为仅使用了单层 Map,要生成目标嵌套 YAML 只需要构造对应层级的嵌套 Map 即可。

修改后完整代码

import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

public class YamlGenerator {
    public static void main(String[] args) {
        // 构造三层嵌套Map对应YAML的层级关系
        Map<String, Object> innerIdMap = new HashMap<>();
        innerIdMap.put("id", 1234);

        Map<String, Object> testUserMap = new HashMap<>();
        testUserMap.put("test", innerIdMap);

        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("admins", testUserMap);

        // 原有DumperOptions配置保持不变
        DumperOptions options = new DumperOptions();
        options.setIndent(2);
        options.setPrettyFlow(true);
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
        Yaml yaml = new Yaml(options);

        PrintWriter writer = null;
        try {
            writer = new PrintWriter(new File("./src/main/resources/admins.yml"));
            yaml.dump(dataMap, writer);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 增加流关闭逻辑避免资源泄漏
            if (writer != null) {
                writer.close();
            }
        }
    }
}

输出结果

运行上述代码后会生成你需要的目标YAML结构:

admins:
  test:
    id: 1234

扩展说明

  • 如果需要构造更多层级的嵌套结构,只需要按照YAML的层级对应构造多层嵌套Map即可,SnakeYAML会自动处理序列化逻辑
  • 原有DumperOptions的缩进、块格式配置不需要修改,可直接复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 15:36:02