如何使用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 的语法。

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

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,一切开始工作。

相关内容

  • 没有找到相关文章

最新更新