当前位置: 首页 > news >正文

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

1,背景

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

部分代码

    @ApiModelProperty(value = "列表", required = true)private List<AppDto> appDtoList;
    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;
这真是坑惨了,也涨教训了,如果不想换导入包,可以在字段上面加注解,也可以解决问题

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

3,深入学习

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

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

背景
fastjson(旧版):最早发布的 JSON 解析库,广泛应用于各种 Java 项目中。
fastjson2(新版):完全重构的版本,在性能、功能和兼容性上有显著提升,目标是替代旧版。

区别:
fastjson2:速度快,性能高,新增 @JSONType 注解

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

        <dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.23</version> </dependency>
http://www.xdnf.cn/news/580393.html

相关文章:

  • Spark Streaming原理与应用
  • SpringCloud Alibaba微服务-- Sentinel的使用(笔记)
  • Spark SQL、Hive SQL运行流程解析及对比
  • macOS专业用户远程操作全场景优化指南:开发运维协同、安全合规与性能提升实战
  • GitLab 备份所有仓库(自动克隆)
  • OceanBase数据库全面指南(查询进阶篇DQL)
  • XXE(外部实体注入)
  • 创建信任所有证书的HttpClient:Java 实现 HTTPS 接口调用,等效于curl -k
  • 【Linux学习笔记】ext2文件系统的深度剖析
  • 微软CTO:AI已经“能力过剩”,行业需要努力缩小模型能力与实际产品交付之间的差距
  • rt-linux下的底层锁依赖因cgroup cpu功能导致不相干进程的高时延问题
  • 边缘计算是什么?逻辑视域下的边缘计算:分布式计算范式的理论基础与逻辑结构分析
  • SQL的RAND用法和指定生成随机数的范围
  • MySQL中InnoDB引擎逻辑存储结构、B+树索引结构、B+树高度及存储数据量
  • 从零基础到最佳实践:Vue.js 系列(8/10):《性能优化与最佳实践》
  • 借助Azure AI Foundry 如何打造语音交互新体验
  • 结构型:适配器模式
  • K8S之核心技术Helm
  • 谷歌medgemma-27b-text-it医疗大模型论文速读:面向医学视觉问答的语义标签知识增强数据集SLAKE
  • 【Linux】进程间通信(四):System V标准(共享内存、消息队列、信息量)
  • [Git] 认识 Git 的三大区域 文件的修改和提交
  • linux杀死进程自身
  • Docker实战
  • docker network 自定义网络配置与管理指南
  • 数字孪生技术如何重塑能源产业?
  • 生成树协议(STP)配置详解:避免网络环路的最佳实践
  • java基础(api)
  • 第八天的尝试
  • 印度语言指令驱动的无人机导航!UAV-VLN:端到端视觉语言导航助力无人机自主飞行
  • AllToAll通信为什么用于EP并行?