繁体   English   中英

在包含连字符的 Yaml 中使用 Groovy 3 YamlBuilder

[英]Using Groovy 3 YamlBuilder with Yaml that contains a hyphen

我正在尝试编写一个使用 yamlbuilder 编写 yaml 文件的 Groovy 3 脚本。 除了以下内容,我几乎可以处理所有事情;

execution:
  set-props:
    url:http://myhouse.net
    port:8000

如何编写允许在名称中使用连字符的映射? 继我之前的工作之后,我愚蠢地尝试了;

def setprops=[:]
setprops=(["url":"http://myhouse.net","port":"8000"])
execution.set-props=setprops

这给了我一个错误“赋值的 LHS 应该是一个变量或一个字段”。

如果我只使用 execution.setprops 那么它工作正常,但当然 yaml(execution) 产生的 yaml 是无效的。

我认为如果 set-props 是一个键/值对,那么它可以引用,一切都会好起来的。 但是因为它是结构的一部分,我不知道需要做什么。

您可以使用字符串作为“方法”,构建器将从它们创建您的中间结构:

import groovy.yaml.YamlBuilder

def b = new YamlBuilder()

b.execution {
    "set-props"(
        url: "..."
    )
}

println b

或者继续您的示例:您可以创建整个地图并使用 is 作为参数,您希望在其中包含该内容。

def setprops=["set-props": [url:"..."]]
b.execution(setprops)

两者都会导致:

---
execution:
  set-props:
    url: "..."

请注意,第一个版本通过传递的闭包嵌套,然后传入映射。 第二位只是传递一个嵌套映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM