gpt4 book ai didi

json - 在Grails中渲染JSON

转载 作者:行者123 更新时间:2023-12-03 13:43:37 24 4
gpt4 key购买 nike

我使用以下代码以JSON格式呈现数据。

render(contentType:"text/json") {
results = array {
db.eachRow(query) { row ->
def rs = row.toRowResult()
def a = b(rs.name,c,d)
aMap.put("A",a)
pair(aMap)
}
}
if (results) {
status = "OK"
}
else {
status ="Nothing present"
}
}

上面的代码以以下格式生成JSON
{
"results": [
{"A":"value1"},
{"A":"value2"},
...................
{"A":"valuen"}
],
"status":"OK"
}

如您在上面看到的,数据被呈现为对象的 数组。有没有一种方法可以将结果数据呈现为元素的 数组。喜欢
{
"results": [
"value1",
"value2",
...................
"valuen"
],
"status":"OK"
}

最佳答案

JSON对象的构建方式非常模糊。我想要在grails中呈现JSON响应的方法是在groovy中创建 map 或列表,然后使用render方法将其转换为JSON。

在render方法中进行rowResult的转换会使它非常混乱,我宁愿这样做

def results = db.rows(query).collect { rowResult ->
b(rowResult.name, c, d)
}
render(contentType: 'text/json') {[
'results': results,
'status': results ? "OK" : "Nothing present"
]}

我认为它更具可读性,甚至更短。此代码段将为您提供所需的结果: results数组中没有对象,只有字符串。

注意 rows的使用,它返回RowResult的列表,而无需从ResultSet获取它。该列表用于通过在每一行的名称上调用 a来收集转换后的值 b。收集元素并不意味着创建 map (就像在您获取的 { "A":"value1"} JSON中一样),只是使用 <<运算符在一个新的空列表上实现的@ will-buck相同。

我们使用render方法所做的就是声明 text/json内容类型,并将其传递给包含要写入响应的键 resultsstatus的文字映射。条件运算符用于简洁地确定状态。也可以像这样使用JSON转换器@ will-buck:
def responseData = [
'results': results,
'status': results ? "OK" : "Nothing present"
]
render responseData as JSON

关于json - 在Grails中渲染JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com