【问题标题】:Java JsonParseException: Unexpected character Reading JSON from Oracle 11gJava JsonParseException:从 Oracle 11g 读取 JSON 的意外字符
【发布时间】:2017-07-23 23:40:53
【问题描述】:

我们有一些数据作为序列化 JSON 保存在 Oracle 11g 的 CLOB 列中。稍后,这些数据被读回并反序列化。但是在某些情况下,反序列化失败(使用杰克逊)。

 Failed to deserialize emvData JSON into HashMap. EMVData -> weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB@1e52cd
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('w' (code 119)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: java.io.StringReader@56c70524; line: 1, column: 2]

问题是它试图反序列化的 JSON 中的任何地方都没有“w”字符。我怀疑这可能是字符编码问题... Oracle 11g 服务器使用的是 AL32UTF8。

这是进行序列化的代码:

public String serializeEMVData(Map<String, String> emvData) {

    ObjectMapper objectMapper = new ObjectMapper();
    if (emvData != null) {
        try {
            return objectMapper.writeValueAsString(emvData);
        } catch (JsonProcessingException ex) {
            logger.error("Failed to serialize EMV data as JSON", ex);
        }
    }
    return null;
}

这是反序列化的代码

public static Map<String, String> deserializeEMVData(String serializedEmvData) {


        HashMap<String, String> emvData = null;
        if (serializedEmvData != null) {
            ObjectMapper objectMapper = new ObjectMapper();
            try {
                emvData = objectMapper.readValue(serializedEmvData, HashMap.class);
            } catch (IOException e) {
                logger.error("Failed to deserialize emvData JSON into HashMap. EMVData -> " + serializedEmvData.toString(), e);
            }
        }
        if (emvData != null) {
            return new TreeMap<String, String>(emvData);
        } else {
            return null;
        }
    }

我如何告诉 Java 字符集是 AL32UTF8 还是我需要在查询中转换它....

【问题讨论】:

    标签: java json oracle11g jackson deserialization


    【解决方案1】:

    您是否正确地将 CLOB 转换为字符串? 看起来您正在尝试将 CLOB.toString()(即“weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB@1e52cd”)转换为 java 对象。

    【讨论】:

      猜你喜欢
      • 2015-03-23
      • 2018-07-22
      • 2016-12-12
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多