如何使用Groovy的JsonBuilder创建一个双元素对象?

时间:2014-12-09 07:13:09

标签: json groovy jsonbuilder

在我的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的语法。

2 个答案:

答案 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,一切都开始有效。