字符串转换成对象列表时候抛出异常:com.alibaba.fastjson.JSONException: TODO

这篇具有很好参考价值的文章主要介绍了字符串转换成对象列表时候抛出异常:com.alibaba.fastjson.JSONException: TODO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

前段时间公司提出要修复Fastjson1.2.80及以下版本, 代码执行漏洞,该漏洞允许攻击者绕过 Fastjson 中的"AutoTypeCheck"机制并实现远程代码执行这个漏洞,最简单的方法当然是升级Fastjson版本,但是升级版本之后出现了一系列新的问题,其中就包括这个,升级后的版本是2.0.0版本。


原因分析:

public static List parseArray(String text, Class clazz)方法是一个比较常用的方法,遇到问题的第一反应我没有怀疑jar包出现了问题,而是怀疑字符串里出现了某些特殊字符导致的出错,研究了好长一段时间,没有啥头绪,最后就只能看看源码了,看完源码之后我麻了呀。
以下是2.0.0版本这个方法的实现:
字符串转换成对象列表时候抛出异常:com.alibaba.fastjson.JSONException: TODO
好家伙,我直接好家伙,直接没有实现。
顺便贴一下原先低版本1.2.32中此方法的实现
字符串转换成对象列表时候抛出异常:com.alibaba.fastjson.JSONException: TODO


解决方案:

找到问题了,解决就相对简单了。
第一种解决方案就是不再调用此方法了,使用其他方法来达到我们的目的;
比如使用jsonlib里的方法来实现

JSONArray jsonArray = SONArray.fromObject(json);
for(int i=0;i<jsonArray.size();i++){
	JSONObject job = jsonArray.getJSONObject(i);
}

第二种就是自己写一个公共方法来替代jar包里的这个方法,工作量与第二种差不了多少;
附上低版本中的方法实现,给大家参考一下:

public static <T> List<T> parseArray(String text, Class<T> clazz) {
        if (text == null) {
            return null;
        }

        List<T> list;

        DefaultJSONParser parser = new DefaultJSONParser(text, ParserConfig.getGlobalInstance());
        JSONLexer lexer = parser.lexer;
        int token = lexer.token();
        if (token == JSONToken.NULL) {
            lexer.nextToken();
            list = null;
        } else if (token == JSONToken.EOF && lexer.isBlankInput()) {
            list = null;
        } else {
            list = new ArrayList<T>();
            parser.parseArray(clazz, list);

            parser.handleResovleTask(list);
        }

        parser.close();

        return list;
    }

第三种就是换jar包,简单快捷。文章来源地址https://www.toymoban.com/news/detail-406517.html

到了这里,关于字符串转换成对象列表时候抛出异常:com.alibaba.fastjson.JSONException: TODO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Python里,把字符串转换成列表的7种方法

    方法一:使用list()方法 方法二:使用列表解析 方法三:使用字符串切片 方法四:使用enumerate方法 运行后输出: ​​​​​​​ 方法五:使用split()方法 运行后输出: 方法六:使用JSON模块 方法七:使用ast.literal 运行后输出: 文章参考:Python | 将字符串转换为列表的7种方法_p

    2024年02月03日
    浏览(40)
  • 在 Python 中将对象转换为字符串

    使用 str() 类将对象转换为字符串,例如 result = str(my_object) 。 str() 类返回给定对象的字符串版本。 第一个示例使用 str() 类将对象转换为字符串。 str 类接受一个对象并返回该对象的字符串版本。 如果需要将类对象转换为字符串,请实现 __str__() 方法。 使用 __str__() 方法将对象

    2024年02月08日
    浏览(60)
  • base64 字符串转换为 Blob 对象

    在 JavaScript 中,可以使用以下代码将 base64 字符串转换为 Blob 对象: 其中, base64 是待转换的 base64 字符串, type 是 Blob 对象的 MIME 类型,默认值为 \\\'application/octet-stream\\\' 。该函数返回一个 Blob 对象。 可以像下面这样使用该函数: 其中, base64Str 是待转换的 base64 字符串, ima

    2024年02月15日
    浏览(41)
  • Json对象和Json字符串之间相互转换

    作为前端开发,在和后端进行联调接口时,总会遇到要求传JSON字符串或是JSON对象,或者是返回值里是JSON字符串要在页面上展示JSON对象这种情况,都需要前端开发人员对Json对象和Json对象进行相互转换,得到想要的结果。 废话不多说,直接上干货: 1.首先定义一个Json对象:

    2024年02月11日
    浏览(57)
  • java对象与Json字符串的相互转换

    文章目录 1.Json对象转换为java 对象 2. Java对象转换JSON 1.Json对象转换为java 对象 导入jackson的相关jar包 创建Jackson核心对象 ObjectMapper 调用ObjectMapper的相关方法进行转换 2. Java对象转换JSON 常见的解析器:Jsonlib,Gson,fastjson,jackson 1.导入jackson的相关jar包 2.创建Jackson核心对象 Obj

    2024年02月09日
    浏览(58)
  • 将 base64 字符串转换为 Blob 对象

    在 JavaScript 中,可以使用以下代码将 base64 字符串转换为 Blob 对象: 其中, base64 是待转换的 base64 字符串, type 是 Blob 对象的 MIME 类型,默认值为 \\\'application/octet-stream\\\' 。该函数返回一个 Blob 对象。 可以像下面这样使用该函数: 其中, base64Str 是待转换的 base64 字符串, ima

    2024年02月16日
    浏览(65)
  • js字符串转换为对象格式的3种方法

    var str = \\\'{\\\"name\\\":\\\"小明\\\",\\\"age\\\":18}\\\'; var json = JSON.parse(str);//第一种 var json2 = eval(\\\"(\\\" + str + \\\")\\\");//第二种 var json3 = (new Function(\\\"return \\\" + str))();//第三种 1.JSON.parse() JSON.parse(text[, reviver]);   //text:必需, 一个有效的 JSON 字符串。 //reviver: 可选,一个转换结果的函数, 将为对象的每个成员调

    2024年01月21日
    浏览(48)
  • 微信小程序开发——json对象和字符串转换

    JSON对象和字符串的互转 注意事项 1、JSON操作时一定要保证是JSON格式的字符串,或对象。 报错如下: 原代码 1)JSON对象转字符串 2)JSON字符串转对象 解决:JSON字符串转对象时,字符串值应该是 跳转设置是:“…?item=”+jsonstr,即字符参数是 item ,所以转换时要取值 options

    2024年02月11日
    浏览(51)
  • JavaScript 中JSON 字符串和对象之间的转换。

    用于将 JavaScript 对象转换为 JSON 字符串。 它接受一个 JavaScript 对象作为参数,并返回对应的 JSON 字符串表示。例如: 用于将 JSON 字符串转换为 JavaScript 对象。 它接受一个 JSON 字符串作为参数,并返回对应的 JavaScript 对象。例如:  

    2024年01月23日
    浏览(49)
  • JS时间对象(Date)与字符串(String)相互转换

    运行结果: D:DevEnvironmentNodeJsnode.exe D:MyProjectscoding-studysrcmainresourcesstaticutils.js format1 = 2022年09月23日 23:24:39.836 星期五 第3季度 format2 = 2022年9月23日 11:24:39.836 am 周五 第3季度 format3 = 2022-09-23 23:24:39.836 am 五 Process finished with exit code 0 运行结果: D:DevEnvironmentNodeJsnode.exe

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包