【问题标题】:Gson: class com.mysql.jdbc.JDBC4Connection declares multiple JSON fields named connectionLifecycleInterceptorsGson:com.mysql.jdbc.JDBC4Connection 类声明了多个名为 connectionLifecycleInterceptors 的 JSON 字段
【发布时间】:2021-02-13 13:23:54
【问题描述】:

我正在尝试查询数据库,然后使用 google gson 库将获得的结果集转换为 json。尝试这样做时,我收到了错误:
com.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.IllegalArgumentException:com.mysql.jdbc.JDBC4Connection 类声明了多个名为 connectionLifecycleInterceptors 的 JSON 字段 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:172) 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) 在 com.google.gson.Gson.getAdapter(Gson.java:458) 在 com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:56) 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.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) 在 sample.QueryCentre.convertToGson(QueryCentre.java:91) 在 sample.QueryCentre.showavailablerooms(QueryCentre.java:72) 在 sample.ServerSide.main(ServerSide.java:51)

【问题讨论】:

    标签: java mysql jdbc gson resultset


    【解决方案1】:

    ResultSet 不是常规的POJO,您需要对其进行迭代并手动创建POJOMap 实例。在此转换之后,您可以将这些实例的列表传递给序列化过程。

    伪代码:

    List<Map<String, Object>> rows = new ArrayList<>();
    while (results.next()) {
        Map<String, Object> mapForRow = createMapFrom(result);
        rows.add(mapForRow);
    }
    String json = gson.toJson(rows);
    

    有用的方法:

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2016-01-25
      • 2014-09-09
      相关资源
      最近更新 更多