zoukankan      html  css  js  c++  java
  • 解决:java.lang.ArrayIndexOutOfBoundsException: 160 at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:868)

    今天线上遇到一个问题,从hbase里读取出来的数据在转换json后输出时出现异常:

    java.lang.ArrayIndexOutOfBoundsException: 160
            at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:868)
            at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:602)
            at com.alibaba.fastjson.serializer.SerializeWriter.writeString(SerializeWriter.java:1411)
            at com.alibaba.fastjson.serializer.StringCodec.write(StringCodec.java:49)
            at com.alibaba.fastjson.serializer.StringCodec.write(StringCodec.java:34)
            at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:188)
            at com.alibaba.fastjson.serializer.ListSerializer.write(ListSerializer.java:158)
            at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:188)
            at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:369)
            at com.alibaba.fastjson.JSON.toJSONString(JSON.java:596)
            at com.alibaba.fastjson.JSON.toString(JSON.java:590)
            at java.lang.String.valueOf(String.java:2854)
            at java.io.PrintStream.println(PrintStream.java:821)

    从异常信息中可以看出是在json toString的时候出现了错误,可能是引号或者其它不可见字符导致的,查看实际数据并没有出现单双引号,但是出现了 u00A0u00A0u00A0u00A0u00A0u00A0, 是不应该出现问题的,那问题就只可能是u00A0 导致的,查看UNICODE对照表,发现u00A0确实是一个不可见字符

    (unicode 对照表:https://unicode-table.com/en/#control-character):

    u00A0转ASCII,正好是160

    问题变得简单了,可能是fastjson 对不可见字符的支持问题,于是换了个最新版试一下,果然一切正常,问题是解决了,但是得找到具体原因,看了看源代码,当前使用的这个

    版本(1.1.39) 确实有部分特殊字符未做处理。

     可参考官方修正提交:https://github.com/alibaba/fastjson/commit/cdf7cb253e961666e2b3c2bdd423abe73ba4324a#diff-0

  • 相关阅读:
    怎样确定需求
    xampp进程和非进程执行
    将博客搬至CSDN
    管理心得
    数据库性能优化
    开发、架构总结
    activeMQ总结
    php数组操作函数
    Examples_08_08
    保险采购单的修复
  • 原文地址:https://www.cnblogs.com/jessezeng/p/6758569.html
Copyright © 2011-2022 走看看