2

在我的 Groovy 代码中,我声明了两个变量:

results是一个地图数组。它包含从 SQL 查询返回的行列表。

overall是一张地图。它表示单独 SQL 查询的单行。

我想将这两个变量合二为一,并将整个内容输出为 JSON。最后,我希望它看起来像这样:

{"data":[{"results":"array"}],"overall":{"overall":"map"}}

这是我尝试使用的代码,但它不起作用:

def json = new groovy.json.JsonBuilder()
def finalJSON = json {
    data results
    overall overall
}

return json.toString()

但这不起作用......它会引发以下异常:

groovy.lang.MissingPropertyException: No such property: call for class: groovy.sql.GroovyRowResult

我可以验证这两个变量resultsoverall在其中包含正确的数据。我想我只是不理解 JsonBuilder 的语法。

4

2 回答 2

1

在下面找到可能的解决方案:

import groovy.json.*

def r = [[l:1],[l:2]]
def o = [over:1,all:2]

def json = new JsonBuilder()

json {
    data r
    overall o
}
println json.toPrettyString()

def m = [data: r, overall: o]

println JsonOutput.prettyPrint(JsonOutput.toJson(m))
于 2014-12-09T08:04:28.490 回答
0

好吧,我想通了。Groovy 有点愚蠢,因为您显然不能对值使用与您分配的键相同的变量名。所以真正的麻烦在于这行:

overall overall

我将该变量更改为overallData,一切都开始工作了。

于 2014-12-09T14:39:51.017 回答