Groovy创建JSON
下面是我必须在Groovy中执行的SQL查询:Groovy创建JSON,json,groovy,Json,Groovy,下面是我必须在Groovy中执行的SQL查询: def resultset_bio = sql.rows("SELECT author, isbn FROM Book WHERE genre = 'biography'") 我正在尝试将这些数据转换成JSON。为此,我使用以下代码: def json = new groovy.json.JsonBuilder() json { Biographies(resultset_bio.colle
def resultset_bio = sql.rows("SELECT author, isbn FROM Book WHERE genre = 'biography'")
我正在尝试将这些数据转换成JSON。为此,我使用以下代码:
def json = new groovy.json.JsonBuilder()
json {
Biographies(resultset_bio.collect{[id: it]})
}
println json.toPrettyString()
}
我期望的JSON输出应该如下所示:
{
"Biographies":
{
"SSS": ["XXX",456988]
}
}
但是,我得到的是:
{
"Biographies": [
{
"id": {
"author": "XXX",
"isbn": 456988,
}
}
]
}
我应该如何更改代码?请帮助。现在
id
作为静态键传递。
尝试:
您的选择中没有图书标题,因此无法将标题映射到图书信息 要获得按作者分组的每行(地图)的列表布局:
def authorBios = resultset_bio.groupBy { it.author }
def biographies = authorBios.collectEntries { author, row ->
[author, row*.values()]
}
json {
Biographies(biographies)
}
不。我得到了一个groovy.lang.MissingPropertyException:没有这样的属性:class:groovy.sql.GroovyRowResultOk的id,所以用你想放在那里的键替换
id
,是书名吗?是的,是书名,我用书名替换了id。但我还是得到了同样的结果。MissingPropertyException。请在resultset\u bio
中检查您从数据库中得到的确切信息。钥匙是大写还是小写?现在您只需要选择正确的列并用它替换id
。在您的sql查询中,我没有看到获取标题列。好的,我只是编辑了我的问题。预期的Json现在不同了。我的错误。我很抱歉。你真的希望每个领域都有一个对象吗?我想他必须这样做,因为可能有不止一本同名的书。不是很好的身份证。我宁愿使用isbn。是的,这就是要求我生成Json输出的方式。
def authorBios = resultset_bio.groupBy { it.author }
def biographies = authorBios.collectEntries { author, row ->
[author, row*.values()]
}
json {
Biographies(biographies)
}