gpt4 book ai didi

java - GSON 库中出现异常 :- java. lang.IllegalArgumentException : class oracle. jdbc.driver.Accessor 声明多个 JSON 字段命名语句

转载 作者:行者123 更新时间:2023-12-01 18:09:49 25 4
gpt4 key购买 nike

我有一个 map 列表,我希望将其转换为 JSON。我正在使用 GSON 进行转换,但它给出了类似的错误

java.lang.IllegalArgumentException:类 oracle.jdbc.driver.Accessor 声明多个名为语句的 JSON 字段

我正在传递这个名为 results 的对象,该对象是使用 myBatis 获得的。

[{EMAIL_TEMPLATE_ID=1, CREATED_BY=owner, COMMON_BODY=oracle.sql.CLOB@1d8b47a, COMMON_SUBJECT=This os common subject line in notification table, CREATED_DATE=2020-02-03 00:00:00.0, COMMON_CC_USER=abc@gmail.com, STATUS=pending, NOTIFICATION_ID=1, HAS_ATTACHMENT=y, UPDATED_BY=tester, EXPIRY_DAYS=10, SCHEDULE_TIME=2, COMMON_TO_USER=xyz@gmail.com, UPDATED_DATE=2020-02-03 00:00:00.0, NOTIFICATION_TYPE=dist}]
String json = gson.toJson(results);

对于上面的对象,它给了我错误,但对于下面的对象,它工作正常

[{CONTENT_TYPE=abc, ID=1, NAME=abc}, {CONTENT_TYPE=xyz, ID=2, NAME=xyz}]

编辑:-

数据库查询:-


CREATE TABLE "TESTDB"
(
"NOTIFICATION_ID" NUMBER,
"NOTIFICATION_TYPE" VARCHAR2(50) ,
"SITE_ID" VARCHAR2(100),
"CONTENT_TYPE" VARCHAR2(50),
"STATUS" VARCHAR2(50) ,
"COMMON_SUBJECT" VARCHAR2(300),
"COMMON_BODY" CLOB,
"COMMON_TO_USER" VARCHAR2(2500),
"COMMON_CC_USER" VARCHAR2(2500),
"COMMON_BCC_USER" VARCHAR2(2500),
"EMAIL_TEMPLATE_ID" NUMBER,
"HAS_ATTACHMENT" CHAR(1),
"CREATED_DATE" TIMESTAMP ,
"CREATED_BY" VARCHAR2(50),
"UPDATED_DATE" TIMESTAMP,
"UPDATED_BY" VARCHAR2(50),
"EXPIRY_DAYS" NUMBER,
"SCHEDULE_TIME" VARCHAR2(100),
"SP_SEND_STATUS" VARCHAR2(50),
"SP_SEND_DATE" TIMESTAMP,
"SP_SEND_MSG" VARCHAR2(400),
"SP_REQUESTID" VARCHAR2(50),
CONSTRAINT N PRIMARY KEY (NOTIFICATION_ID)
);
COMMIT;

myBatis 映射器:-

<?xml version = "1.0" encoding = "UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace = "ecm">
<select id = "ecmrepo_read" resultType = "java.util.HashMap">
select * from TESTDB
<where>
<foreach item = "entry" index = "key" separator = "AND" collection = "WHERE">
${key} = #{entry}
</foreach>

</where>
</select>

检索 map 列表中的结果

List<Map<String,Object>> results =  session.selectList("ecm.ecmrepo_read",searchparams);

转换为 JSON 格式。

String json = gson.toJson(results);

最佳答案

当使用 Map 作为结果类型时,MyBatis 可能不会选择您选择的类型处理程序。
你可能需要定义一个结果映射来帮助MyBatis。

<resultMap id="testResultMap" type="java.util.HashMap">
<result property="COMMON_BODY" column="COMMON_BODY"
javaType="string" />
<!-- other columns will be auto-mapped -->
</resultMap>

<select id="ecmrepo_read" resultMap="testResultMap">
select * from TESTDB
<where>
<foreach item="entry" index="key" separator="AND" collection="WHERE">
${key} = #{entry}
</foreach>
</where>
</select>

或者,您可以创建并使用 POJO 而不是 HashMap

关于java - GSON 库中出现异常 :- java. lang.IllegalArgumentException : class oracle. jdbc.driver.Accessor 声明多个 JSON 字段命名语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60487329/

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