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

使用eo-yaml正确生成YAML文件及无换行格式错误的解决咨询

问题根因
  • 遍历字段逻辑错误:for循环内部每次新建独立YamlMapping实例,每处理一个字段就直接写入文件,未将所有字段整合为同一个YAML映射结构,导致多段独立紧凑格式的KV直接拼接为无换行单行内容
  • 输出方式错误:YamlMapping.toString()默认输出无换行的紧凑序列化结果,未启用格式化输出能力
修正后的代码

生成方法调整后代码

// 先构建完整的YamlMapping,再统一输出
YamlMappingBuilder yamlBuilder = Yaml.createYamlMappingBuilder();
for ( Field field : clazz.getDeclaredFields() ) {
    if (Modifier.isPrivate(field.getModifiers())) {
        field.setAccessible(true);
    }
    Object value = null;
    try {
        value = field.get(this);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    // 所有字段都添加到同一个builder中
    yamlBuilder.add(field.getName(), value.toString());
}
// 构建完整的YAML映射
YamlMapping yaml = yamlBuilder.build();
try {
    // 使用YamlPrinter配置格式化输出,启用缩进和换行
    YamlPrinter printer = new YamlPrinter(fileWriter, true, 2);
    printer.print(yaml);
    fileWriter.flush();
} catch (IOException e) {
    e.printStackTrace();
}
核心修改点说明
  • 将YamlMappingBuilder的初始化移到循环外部,所有字段统一添加到同一个构建器,最终生成完整的YAML结构,避免多段内容拼接
  • 替换原有的toString()直接写入逻辑,使用YamlPrinter配置格式化输出,第二个参数设为true代表启用换行,第三个参数为缩进空格数,输出后即可得到符合标准的多行YAML格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 18:06:03