我正在尝试在 groovy 中创建一个 JSON 结构,如下所示:
def builder = new JsonBuilder()
builder.configuration {
software {
name name
version version
description "description"
}
git {
name "appName"
repository "repo"
branch "branch"
}
}
其中name
和version
GString
实现。但是,虽然根据调试器,结构似乎可以很好地创建,但每当我尝试打印它或将其写入文件时,我都会收到此错误:
Caught: groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [*my actual value*]
Possible solutions: wait(), any(), wait(long), take(int), each(groovy.lang.Closure), tap(groovy.lang.Closure)
使用引号将name
更改为普通的"字符串"也会产生相同的错误。我做错了什么?
这是因为它认为name(name)
是对名为name
的变量的调用,在这种情况下它是一个字符串......
您可以调用不在 json 结构中的变量名称(即:将name
字符串更改为nameValue
或类似名称)
或者你可以使用 JsonBuilder 的地图形式:
def builder = new JsonBuilder()
def a = 'tim'
def name = "$a"
def version = "$a-1.0"
def root = builder.configuration {
software(
name: name,
version: version,
description: "description"
)
git(
name: 'appName',
repository: 'repo',
branch: 'branch'
)
}