尝试在 Groovy 中创建 JSON 结构时出现令人困惑的错误



我正在尝试在 groovy 中创建一个 JSON 结构,如下所示:

def builder = new JsonBuilder()
builder.configuration {
software {
name name
version version
description "description"
}
git {
name "appName"
repository "repo"
branch "branch"
}
}

其中nameversionGString实现。但是,虽然根据调试器,结构似乎可以很好地创建,但每当我尝试打印它或将其写入文件时,我都会收到此错误:

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'
)
}

相关内容

  • 没有找到相关文章