“write javaBean error, fastjson version 1.2.83, class org.apache.shiro.web.servlet.ShiroHttpServletR

Posted W@Lucky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“write javaBean error, fastjson version 1.2.83, class org.apache.shiro.web.servlet.ShiroHttpServletR相关的知识,希望对你有一定的参考价值。

1. 相关技术

  • springboot 2.6.3
  • mybatis-spring-boot-starter 2.2.2
  • mybatis 3.5.10
  • fastjson 1.2.83
  • hutool-all 5.7.22
  • shiro-spring 1.8.0

2. 报错信息

        "write javaBean error, fastjson version 1.2.83, class org.apache.shiro.web.servlet.ShiroHttpServletRequest, method : getAsyncContext"

具体信息,如下:

3. 报错原因

        ShiroHttpServletRequest不能被fastjson1.2.83序列化。序列化对象key带下划线、特殊符号等等, 都有可能。

4.  部分具体代码

import com.alibaba.fastjson.JSON

Object[] requestParams = pjp.getArgs();
StringBuffer sb = new StringBuffer();
for (Object requestParam : requestParams) 
    if (requestParam != null) 
        sb.append(JSON.toJSONString(requestParam)); // 报错代码
        sb.append(",");
    

 5.  解决方案

方案一:

        使用hutool的Json工具类,如下

sb.append(JSONUtil.toJsonStr(requestParam))

方案二:

        在 toJSONString 调用过程中加入 SerializerFeature.IgnoreErrorGetter,如下

sb.append(JSON.toJSONString(requestParam, SerializerFeature.IgnoreErrorGetter));

方案三:

        在字段上添加注解 @JSONField(serialize =false), 这样做不会报错可以顺利打印,但是添加该注解的字段将不会被序列化并放入到json字符串中。(注意:这里不可取,ShiroHttpServletRequest属于shiro相关依赖的内部类。推荐前两种

我的创作纪念日

机缘

当时一开始进行博客创作主要是想通过内容输出的形式做一些学习过程的记录,以便自己巩固知识点。

收获

在创作过程中最大的收获可能是,很多原本以为自己理解的东西,其实当写出来给别人讲解的时候需要更加透彻的理解。其次的收获可能是一些外在的,比如一些粉丝的支持和关注,一些积极的指正的评论,是这些促使了我去创作更多优秀的博文。

日常

在CSDN的博文创作其实算是我生活的一部分吧,当已经习惯了进行内容输出的时候,有时候一些有趣的、新奇的东西,第一反应就是写出来让大家也知道。在平时学习和工作忙碌的时候,我也会尽量抽出周末这些闲暇的时间来进行一些输出和反馈,这也有助于自己不断接触一些新的东西。

em,因为目前还是学生吧,对未来的规划可能还是偏向于做一些偏应用的工作。

以上是关于“write javaBean error, fastjson version 1.2.83, class org.apache.shiro.web.servlet.ShiroHttpServletR的主要内容,如果未能解决你的问题,请参考以下文章