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
相关产品推荐
相关产品推荐

