【BUG记录】积木报表导出数据出现JSON反序列化报错
一、概要
1、来源
积木报表版本号:1.4.2
2、异常现象
导出Excel失败
3、异常栈:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
com.alibaba.fastjson.JSONException: syntax error, position at 41, name text at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:645) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:581) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:581) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:581) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1430) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1390) at com.alibaba.fastjson.JSON.parse(JSON.java:181) at com.alibaba.fastjson.JSON.parse(JSON.java:191) at com.alibaba.fastjson.JSON.parse(JSON.java:244) at com.alibaba.fastjson.JSON.parseObject(JSON.java:248) at org.jeecg.modules.jmreport.desreport.render.a.d.render(TableRenderStrategy.java:121) at org.jeecg.modules.jmreport.desreport.render.a.a.b.a(BaseBaseRenderStrategy.java:349) at org.jeecg.modules.jmreport.desreport.render.a.a.b.b(BaseBaseRenderStrategy.java:258) at org.jeecg.modules.jmreport.desreport.render.a.a.b.render(BaseBaseRenderStrategy.java:57) at org.jeecg.modules.jmreport.desreport.service.a.e.a(JimuReportServiceImpl.java:3644) at org.jeecg.modules.jmreport.desreport.service.a.e.show(JimuReportServiceImpl.java:3543) at org.jeecg.modules.jmreport.desreport.service.a.e$$FastClassBySpringCGLIB$$4daca651.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684) at org.jeecg.modules.jmreport.desreport.service.a.e$$EnhancerBySpringCGLIB$$5c911a24.show(<generated>) at org.jeecg.modules.jmreport.desreport.service.a.k.a(JmReportExportExcelImpl.java:258) at org.jeecg.modules.jmreport.desreport.service.a.k.a(JmReportExportExcelImpl.java:213) at org.jeecg.modules.jmreport.desreport.service.a.k.exportExcel(JmReportExportExcelImpl.java:117) at org.jeecg.modules.jmreport.desreport.a.a.b(DesignReportController.java:1069)
4、原因
初步定位到的原因是:待导出的数据里面包含了英文双引号
5、重现类型
必现
二、修复进度(更新中)
已通过在Github里提Issue(https://github.com/jeecgboot/JimuReport/issues/953)的方式通知了作者,等待回复中
三、摸查原因
上次导出数据也出现过报错,见随笔(【BUG记录】积木报表导出的时候出现了Blank expression的异常),怀疑这次也是业务数据里面包含特殊字符导致报错,在慢慢缩小报错业务数据的范围之后,定位到是业务数据包含了英文双引号,从而导致JSON反序列化报错,根据异常堆栈信息大致定位到相关代码如下: