【发布时间】:2023-03-07 16:39:01
【问题描述】:
我有一个执行数据库查询、将结果集转换为 JSON 字符串并将字符串返回给客户端的 Web 服务。这是转换器的代码(我从http://biercoff.com/nice-and-simple-converter-of-java-resultset-into-jsonarray-or-xml/ 得到的):
public static String convertToJSON(ResultSet resultSet)
throws Exception {
JSONArray jsonArray = new JSONArray();
while (resultSet.next()) {
int total_rows = resultSet.getMetaData().getColumnCount();
JSONObject obj = new JSONObject();
for (int i = 0; i < total_rows; i++) {
obj.put(resultSet.getMetaData().getColumnLabel(i + 1)
.toLowerCase(), resultSet.getObject(i + 1));
}
jsonArray.add(obj);
}
return jsonArray.toJSONString();
}
在客户端应用程序中,当我打印返回的字符串时,它采用以下格式:
[{"Column1":0.333333,"Column2":"FirmA"},{"Column1":0.666667,"Column2":"FirmB"}]
到目前为止一切都很好。我遇到的问题是将返回的字符串转换为 JSON 数组。我试过这个:
JSONArray arr = new JSONArray(JSON_STRING);
但收到以下错误消息:JSONArray 类中的构造函数 JSONArray 无法应用于给定类型。我尝试先转换成这样的 JSON 对象:
JSONObject obj = new JSONObject(JSON_STRING);
但出现以下错误:不兼容的类型:字符串无法转换为 Map。我究竟做错了什么?谢谢。
【问题讨论】:
-
查看json数组w3schools.com/json/json_syntax.asp的语法,返回的字符串格式应该是arr: [{}, {}]
-
这是我上面显示的返回字符串的格式。我没有发现任何差异。
-
您缺少“arr”:,而只是字符串中的数组值。
-
请将“total_rows”更改为“total_columns”。
-
6ton 我生成了以下形式的字符串: {"Chart":[{"Column1":0.333333,"Column2":"FirmA"} ,{"Column1":0.666667,"Column2" :"FirmB"}]} 但我仍然有确切的问题。
标签: java json web-services