【BUG记录】积木报表导出数据出现JSON反序列化报错

一、概要

1、来源

  积木报表版本号:1.4.2

2、异常现象

  导出Excel失败

3、异常栈:

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)
View Code

4、原因

  初步定位到的原因是:待导出的数据里面包含了英文双引号

5、重现类型

  必现

二、修复进度(更新中

已通过在Github里提Issue(https://github.com/jeecgboot/JimuReport/issues/953)的方式通知了作者,等待回复中

三、摸查原因

上次导出数据也出现过报错,见随笔(【BUG记录】积木报表导出的时候出现了Blank expression的异常),怀疑这次也是业务数据里面包含特殊字符导致报错,在慢慢缩小报错业务数据的范围之后,定位到是业务数据包含了英文双引号,从而导致JSON反序列化报错,根据异常堆栈信息大致定位到相关代码如下:

posted @ 2022-04-27 18:00  voyager_fu  阅读(927)  评论(0编辑  收藏  举报