在我的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的语法。
答案 0 :(得分:0)
查找以下可能的解决方案:
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))
答案 1 :(得分:0)
好的,我明白了。 Groovy有点愚蠢,因为你显然不能使用与你指定的键相同的变量名。所以真正的麻烦在于:
overall overall
我将该变量更改为overallData
,一切都开始有效。