解决:java.lang.ArrayIndexOutOfBoundsException: 160 at com.alibaba.fastjson.serializer.SerializeWriter.writeStringWithDoubleQuote(SerializeWriter.java:868)
2017-04-24 19:38
2091 查看
今天线上遇到一个问题,从hbase里读取出来的数据在转换json后输出时出现异常:
从异常信息中可以看出是在json toString的时候出现了错误,可能是引号或者其它不可见字符导致的,查看实际数据并没有出现单双引号,但是出现了\t\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0,\t是不应该出现问题的,那问题就只可能是\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
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的时候出现了错误,可能是引号或者其它不可见字符导致的,查看实际数据并没有出现单双引号,但是出现了\t\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0,\t是不应该出现问题的,那问题就只可能是\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
相关文章推荐
- [经验小结]jxl写excel时产生“java.lang.ArrayIndexOutOfBoundsException: 5”问题的解决办法
- Tomcat 或JBOSS java.lang.ArrayIndexOutOfBoundsException: 8192原因及其解决方法
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at SimpleCalculator.main的解决方法
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- 解决java.lang.IllegalArgumentException: pointerIndex out of range 或者 arrayindexoutofboundsexception的错误
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at SimpleCalculator.main的解决方法
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- 解决jxl导出excel异常:java.lang.ArrayIndexOutOfBoundsException
- 解决kylin报错:java.lang.ArrayIndexOutOfBoundsException: -1
- Android-71-解决报错: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
- 解决java.lang.IllegalArgumentException: pointerIndex out of range 或者 arrayindexoutofboundsexception的错误
- 解决java.lang.ArrayIndexOutOfBoundsException问题(android:singleLine="true")
- 如何解决在快速向jtable添加数据的时候报AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException:异常
- java.lang.ArrayIndexOutOfBoundsException 异常分析及解决
- 解决Redisson出现Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'create' threw exception; nested exception is java.lang.ArrayIndexOutOfBoundsException: 0的问题
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决
- Nutch 遇见hits.getHits()出现java.lang.ArrayIndexOutOfBoundsException解决办法
- java.lang.ArrayIndexOutOfBoundsException异常分析及解决