在我的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
我可以验证两个变量results
和overall
中都有正确的数据。我想我只是不理解 JsonBuilder 的语法。
在下面找到可能的解决方案:
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))
好吧,我想通了。Groovy有点愚蠢,因为您显然不能对值使用相同的变量名称作为您分配的键。所以真正的麻烦在于那行:
overall overall
我将该变量更改为overallData
,一切开始工作。