为什么在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
在 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 的官方文档中查找相关信息。
问题已经修复,请用新版本 https://github.com/alibaba/fastjson2/releases/tag/2.0.7
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。