0

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

def builder = new JsonBuilder()

builder.configuration {
            software {
                name name
                version version
                description "description"
            }
            git {
                name "appName"
                repository "repo"
                branch "branch"
            }
        }

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

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通过使用引号更改为普通的“字符串”也会产生相同的错误。我究竟做错了什么?

4

1 回答 1

1

这是因为它认为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'
    )
}
        
于 2021-09-03T09:55:48.957 回答