gpt4 book ai didi

java - 如何将SQL结果写入JSON

转载 作者:行者123 更新时间:2023-11-30 08:13:09 24 4
gpt4 key购买 nike

我已经成功编写了代码,使用 Google GSON 将 SQL 结果集的第一条记录写入 JSON。

不幸的是,当结果集有超过 1 条记录时,它会抛出以下异常:

JSON must have only one top-level value

这是我的代码:

HttpServletResponse httpres = response;
httpres.setContentType("application/json; charset=UTF-8");
httpres.setCharacterEncoding("UTF-8");

JsonWriter writer = new JsonWriter(new OutputStreamWriter(
httpres.getOutputStream(), "UTF-8"));

while (rs.next()) {
writer.beginObject();
// loop rs.getResultSetMetadata columns
for (int idx = 1; idx <= rsmd.getColumnCount(); idx++) {
writer.name(rsmd.getColumnLabel(idx)); // write key:value pairs
writer.value(rs.getString(idx));
}
writer.endObject();
}

writer.close();
httpres.getOutputStream().flush();

如何解决这个问题?

最佳答案

您的代码将生成如下所示的 JSON:

{
"foo":"bar"
},
{
"foo":"baz"
},
{
"foo":"quux"
}

但是,this is not valid JSON ;除非位于对象或数组内,否则不能使用逗号。

但是,如果你添加 beginArrayendArray,你的代码将变成这样:

writer.beginArray();
while(rs.next()) {
// snip... no changes to your code
}
writer.endArray();

这将使您的 JSON 看起来像这样:

[ 
{
"foo":"bar"
},
{
"foo":"baz"
},
{
"foo":"quux"
}
]

哪个有效的 JSON,并且可以解决您的问题。

关于java - 如何将SQL结果写入JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065413/

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