Groovy创建JSON

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

下面是我必须在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.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)
}