com.alibaba.fastjson2 和com.alibaba.fastjson 区别

1,背景

最近发生了一件很奇怪的事:我们的服务向第三方发送请求参数时,第三方接收到的字段是首字母大写的 AppDtoList ,但我们需要的是小写的 appDtoList 。这套代码是从其他项目A原封不动复制过来的,我们仔细核对了项目A中 ApplyReq 的字段定义和业务代码,发现两者基本一模一样。然而,项目A传输过去的参数字段首字母是小写的 appDtoList ,而我们这边传输的却是大写的 AppDtoList

部分代码

java 复制代码
    @ApiModelProperty(value = "列表", required = true)
    private List<AppDto> appDtoList;
java 复制代码
    public static void main(String[] args) {
        ApplyReq req = new ApplyReq ();
        List<AppDto> appDtoList= new ArrayList<>();
        req.setAppDtoList(appDtoList);
        System.out.println(JSON.toJSONString(req));
    }

打印结果:

{"AppDtoList":[]}

2,原因

经过争论,发现是引入的JSON包不一样,我用的是

import com.alibaba.fastjson2.JSON;

项目A用的是import com.alibaba.fastjson.JSON;

这真是坑惨了,也涨教训了,如果不想换导入包,可以在字段上面加注解,也可以解决问题

java 复制代码
    @ApiModelProperty(value = "列表", required = true)
    @JSONField(name = "appDtoList")
    private List<AppDto> appDtoList;

3,深入学习

既然发生了这个问题,那就深入了解一下这2个包的差异以及使用注意事项

来源:com.alibaba.fastjson2 和 com.alibaba.fastjson 是阿里巴巴开发的 JSON 处理库的不同版本

背景

fastjson(旧版):最早发布的 JSON 解析库,广泛应用于各种 Java 项目中。

fastjson2(新版):完全重构的版本,在性能、功能和兼容性上有显著提升,目标是替代旧版。

结语

在自己创建的新项目里面写一样的代码,就是复现不了上面的情况,版本不同代码也有所差异,难受,只有这个版本才能复现,但是我没时间再搞这个,先记录一笔

xml 复制代码
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.23</version> 
        </dependency>
相关推荐
掘金-我是哪吒9 分钟前
分布式微服务系统架构第157集:JavaPlus技术文档平台日更-Java多线程编程技巧
java·分布式·微服务·云原生·架构
飞翔的佩奇18 分钟前
Java项目:基于SSM框架实现的忘忧小区物业管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
java·数据库·mysql·vue·毕业设计·ssm框架·小区物业管理系统
RainbowSea35 分钟前
跨域问题(Allow CORS)解决(3 种方法)
java·spring boot·后端
掘金-我是哪吒37 分钟前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
java·分布式·微服务·云原生·架构
RainbowSea40 分钟前
问题 1:MyBatis-plus-3.5.9 的分页功能修复
java·spring boot·mybatis
前端 贾公子43 分钟前
monorepo + Turborepo --- 开发应用程序
java·前端·javascript
不学会Ⅳ1 小时前
Mac M芯片搭建jdk源码环境(jdk24)
java·开发语言·macos
虫小宝1 小时前
高佣金返利平台监控体系建设:APM、链路追踪与佣金异常预警系统技术实现
java
sniper_fandc2 小时前
SpringBoot系列—入门
java·spring boot·后端
代码的余温3 小时前
Maven引入第三方JAR包实战指南
java·maven·jar