尝试在 Groovy 中创建 JSON 结构时出现混淆错误
Confusing error when trying to create a JSON structure in Groovy
我正在尝试在 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
更改为普通的“String”也会产生相同的错误。我做错了什么?
这是因为它认为 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'
)
}
我正在尝试在 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
更改为普通的“String”也会产生相同的错误。我做错了什么?
这是因为它认为 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'
)
}