Java Jsonparseexception:意外的角色阅读Oracle 11G的JSON



我们有一些数据,这些数据被保存在Oracle 11g的clob列中,作为序列化JSON。后来,将回顾并进行审理。但是,在某些情况下,避难所是失败的(使用杰克逊)。

 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,或者我需要在查询中转换它..

您是否将clob转换为正确的字符串?看来您正在尝试将clob.tostring()(i。

最新更新