0617 關於 fastjson報ArrayIndexOutOfBoundsExcept:160錯誤

最近改接口測試代碼的時候,遇到了個問題報ArrayIndexOutOfBoundsException: 160錯誤java

百度谷歌了半天也沒找到解決辦法,web

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:87) 
 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:418) 
 at com.alibaba.fastjson.JSON.toJSONString(JSON.java:568)json

 

大概就是超長或者特殊字符測試

 

加斷點跟蹤了下,30多萬字節的返回數據,難道是超長?spa

 

徹底沒有頭緒,寫了幾行代碼,單條跟蹤試試吧code

 String contentd= "XXXXXXXXXXXXXXX";
 JSONObject jsonObject = JSON.parseObject(contenta);
 System.out.println(jsonObject);

 截斷了些數據,測試了下,發現不會報錯,真是超長?orm

再試了幾回,發現原來是有特殊字符!!!傳輸的String中 有不可見字符,相似於空格,但又不是空格,應該就是不可見的特殊字符吧。接口

 

找到了問題的所在,接下來就是想一想怎麼解決了。源碼

最好的辦法就是fastjson能夠支持特殊字符,做者大概一時半會也不會修改it

本身修改源碼,算了,我還太菜。

 

其實能夠偷工取消下吧

我只要讓返回數據正常打印出來就行。

contenta=contenta.replace(" "," ");

 把特殊字符替換成空格。先解決眼前的問題。

加斷點,跟蹤下程序,replace一下。

這是目前想到的最簡單快捷的方法了。不過也是治標不治本

相關文章
相關標籤/搜索