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

Groovy使用YamlBuilder写入YAML文件格式异常求助

解决Groovy YamlBuilder生成YAML时多余大括号的问题

问题出在你调用了builder.yaml {},这相当于在YAML根层级额外创建了一个名为yaml的键,最终输出自然会把整个部署配置嵌套在这个键下,导致出现多余的外层大括号结构。

这里有两种修正方案:

方案一:直接构建根节点(推荐)

不需要用yaml方法包裹,直接在builder实例上定义YAML的根内容:

import groovy.yaml.YamlBuilder

def builder = new YamlBuilder()

// 直接在builder上定义根节点,去掉外层的yaml{}
builder {
    apiVersion 'apps/v1'
    kind 'Deployment'
    metadata {
        name 'weblogic-testapp'
        namespace 'app'
        labels {
            app 'weblogic'
        }
    }
}
def output = builder.toString()
new File('deployment.yaml').write(output)

方案二:获取指定节点内容

如果一定要保留yaml方法的写法,需要单独取出builder.yaml对应的节点再转字符串:

import groovy.yaml.YamlBuilder

def builder = new YamlBuilder()

builder.yaml {
    apiVersion 'apps/v1'
    kind 'Deployment'
    metadata {
        name 'weblogic-testapp'
        namespace 'app'
        labels {
            app 'weblogic'
        }
    }
}
// 不要直接调用builder.toString(),而是取yaml节点的内容
def output = builder.yaml.toString()
new File('deployment.yaml').write(output)

修正后生成的deployment.yaml会是正确的YAML格式:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: weblogic-testapp
  namespace: app
  labels:
    app: weblogic

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:57:03