阿里巴巴fastjson版本从1.2.72升级到2.0.14。开启autoType,不支持Object对象接收强转成Java对象的解决方案。

方案一:Object对象接收强转成Java对象,需要先转成JSON对象,再转换成Java对象。 


    @Autowired
    public RedisTemplate redisTemplate;
    
    @Test
    public void fastJson(){
        /*
         * redis 数据:
         * {"@type":"xx.xx.GoodsDetailDTO","goodsName":"HK GOLD香港黄金","goodsPrice":100.00}
         * 
         * 错误信息:
         * java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to xx.xx.GoodsDetailDTO
         */

        //@Version 1.2.72
        GoodsDetailDTO goodsDetail;
        //Object对象
        Object object = this.getCacheObject(GoodsKeyConstant.GOODS_DETAIL_KEY + 1L);
        if (Objects.nonNull(object)) {
            //Object对象强转成Java对象
            goodsDetail = (GoodsDetailDTO) object;
            log.info("商品信息:{}", JSONObject.toJSONString(goodsDetail));
        }

        //@Version 2.0.14
        //先转成JSON对象
        JSONObject jsonObject = this.getCacheObject(GoodsKeyConstant.GOODS_DETAIL_KEY + 1L);
        //JSON对象转换成Java对象
        GoodsDetailDTO goodsDetailDTO = jsonObject.toJavaObject(GoodsDetailDTO.class);
        log.info("商品信息:{}", JSONObject.toJSONString(goodsDetailDTO));
    }

    private  <T> T getCacheObject(String key) {
        ValueOperations<String, T> operation = redisTemplate.opsForValue();
        return operation.get(key);
    }
升级 FastJSON 版本1.2.83 可能是因为想要利用新版本提供的功能增强、性能优化或者修复了已知的问题。FastJSON阿里巴巴开源的一个 Java 库,用于处理 JSON 数据的转换。以下是升级步骤和可能关注的要点: 1. **查看更新日志**:首先,访问 FastJSON 的官方 GitHub 仓库(https://github.com/alibaba/fastjson)或项目文档,了解从旧版本1.2.83 版本的具体变化,包括新功能、API 更改和已修复的 bug。 2. **备份现有依赖**:在升级前,确保备份当前项目的依赖文件,以防升级过程中出现问题。 3. **添加新依赖**:在你的项目构建文件(如 Maven 的 pom.xml 或 Gradle 的 build.gradle)中,将旧版本FastJSON 依赖替换为 1.2.83 版本。例如: ```xml <!-- Maven 示例 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <!-- Gradle 示例 --> implementation 'com.alibaba:fastjson:1.2.83' ``` 4. **编译测试**:更新依赖后,重新编译并运行项目,检查是否引入了新的错误或警告。如果有,根据错误提示调整代码。 5. **代码兼容性检查**:检查代码中是否直接使用了 FastJSON 的新特性或API,确保它们与新版本兼容。如果发现不兼容的地方,可能需要修改代码以适应新的 API。 6. **性能和稳定性测试**:对升级后的项目进行全面的功能测试和性能基准测试,确保升级没有导致意外的性能下降或数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值