У меня есть Список карт, и я хочу, чтобы он был преобразован в JSON. Я использую GSON для преобразования, но выдает ошибку типа
java .lang.IllegalArgumentException: класс oracle .jdb c .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 Mapper: - *
<?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>
Получение результатов в списке карт
List<Map<String,Object>> results = session.selectList("ecm.ecmrepo_read",searchparams);
преобразование в JSON формат.
String json = gson.toJson(results);