我正在尝试查询数据库,然后使用谷歌gson库将获得的结果集转换为json。在尝试这样做时,我得到了错误:
classcom.mysql.jdbc.JDBC4Connection声明了多个名为connectionLifecycleInterceptors 的JSON字段
我试图查找connectionLifecycleInterceptors变量来更改名称,但我做不到。本文中的其他问题不仅仅涉及超类和子类,而我得到的错误,我想来自数据库结果集。
public String convertToGson(ResultSet results) throws Exception
{ //code to convert resultset to gson
Gson gson = new Gson();
String gsonstring = gson.toJson(results);///it indicates the error is here
return gsonstring;
}
以下是错误:java.lang.IollegalArgumentException:类com.mysql.jdbc.JDBC4Connection声明了多个名为connectionLifecycleInterceptors的JSON字段在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapter Factory.java:172(网址:com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapter Factory.java:102(网址:com.google.gson.gson.getAdapter(gson.java:458(网址:com.google.gson.internal.bind.TypeAdapterUntimeTypeWrapper.write(TypeAdapterUnimeTypeWrappeR.java:56(网址:com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapter Factory.java:127(网址:com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapter Factory.java:245(网址:com.google.gson.gson.toJson(gson.java:704(网址:com.google.gson.gson.toJson(gson.java:683(网址:com.google.gson.gson.toJson(gson.java:638(网址:com.google.gson.gson.toJson(gson.java:618(在样品中。QueryCentre.covertToGson(QueryCentre.java:91(在样品中。QueryCentre.showavailablerooms(QueryCentre.java:72(在样品中。ServerSide.main(ServerSide.java:51(
ResultSet
不是常规的POJO
,您需要对其进行迭代并手动创建POJO
或Map
实例。在这个转换之后,您可以将这些实例的列表传递给序列化过程。
伪码:
List<Map<String, Object>> rows = new ArrayList<>();
while (results.next()) {
Map<String, Object> mapForRow = createMapFrom(result);
rows.add(mapForRow);
}
String json = gson.toJson(rows);
有用的方法:
- getMetaData
- 下一个
另请参阅:
- Java,在结果集中循环
- 要列出的结果集