开发者社区> 问答> 正文

2.x com.alibaba.castjson.JSONAArray无法强制转换为com.alib

为什么在fastjson2这里不采用原先的jsonArray呢?

1.x中 使用类型转换

JSONObject fileJson = JSON.parseObject(jsonStr); JSONArray files = (JSONArray) fileJson.get("files"); 更换成2.x后使用上面的代码会出现com.alibaba.fastjson2.JSONArray cannot be cast to com.alibaba.fastjson.JSONArray 是因为格式化代码中的JSONArray 被替换成了com.alibaba.fastjson2.JSONArray。可以再com.alibaba.fastjson2.reader.ObjectReaderImplMap中488行 JSONArray list = new JSONArray();

原提问者GitHub用户nuoqin

展开
收起
飘飘斯嘉丽 2023-04-21 12:03:24 466 0
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    在 FastJson 2.x 中,确实存在 com.alibaba.fastjson.JSONArray 和 com.alibaba.fastjson2.JSONArray 两个类,这是因为在 2.x 版本中,FastJson 对代码进行了重构,以提高性能和稳定性。

    如果你的代码中使用了 com.alibaba.fastjson.JSONArray,而在升级到 2.x 版本时出现了 com.alibaba.fastjson2.JSONArray cannot be cast to com.alibaba.fastjson.JSONArray 的错误,可能是因为你的代码中同时引用了 1.x 和 2.x 版本的 FastJson 库,导致类冲突。

    解决这个问题的方法是,将代码中所有引用 1.x 版本的 FastJson 库的地方都替换成 2.x 版本的库,确保只使用一个版本的库即可。在 Maven 或 Gradle 中,可以使用 Dependency Tree 或 Dependencies 命令来查看依赖关系,找出冲突的库,并将其排除或升级到正确的版本。

    如果你确信代码中只引用了 2.x 版本的 FastJson 库,但仍然出现了 com.alibaba.fastjson2.JSONArray cannot be cast to com.alibaba.fastjson.JSONArray 的错误,可能是因为代码中使用了不兼容的 API 或方法。你可以检查代码中使用的 FastJson API 是否与 2.x 版本兼容,或者在 FastJson 的官方文档中查找相关信息。

    2023-04-21 21:17:07
    赞同 展开评论 打赏
  • 问题已经修复,请用新版本 https://github.com/alibaba/fastjson2/releases/tag/2.0.7

    原回答者GitHub用户wenshao

    2023-04-21 14:50:28
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载