FastJson与JackSon 的碰撞。服务发送方与服务接收方字段不一致问题

本文主要是介绍FastJson与JackSon 的碰撞。服务发送方与服务接收方字段不一致问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

情景再现
对接文档人家要求字段为

在这里插入图片描述
于是乎 咱就在服务的发送方定义参数字段为
在这里插入图片描述
服务接收方接收的类型为
在这里插入图片描述
later。。。。。
服务接收方接收到的参数字段 就不变成了fOrgId。跟外部系统对接就提示参数错误

原因 :lombok 在做set get的时候自动 无论你字段的首字母是大写的还是小写的全都 转为小写的,也就是经典的驼峰式。

解决方法:
在这里插入图片描述
至于为什么加两个注解,这两个注解的区别,以及作用是什么,请听我娓娓道来。
首先是这两个注解的来源

@JSONField
来源于 FastJSON, FastJSON是由阿里巴巴开源的高性能JSON处理库,以其出色的解析速度和易用性而闻名。它支持丰富的JSON解析和序列化功能,非常适合高并发的Web应用

@JsonProperty
来源于Jackson ,Jackson是Spring Boot的默认JSON处理库 是一个高效、功能丰富的Java JSON处理库,广泛应用于各类Java项目中。它由Fasterxml公司维护,提供了序列化、反序列化、数据绑定等多种功能。

作用:
都是为了进行序列化 ,反序列化 转化为指定字段。

为什么加两个注解:

开始的时候 我使用了@JSONField 进行字段转换, 那是一顿操作呀,服务发送方日志也打印了
组装的值没问题 字段打印也没问题 为FOrgId,但是啊,就很离奇,到服务接收方 ,接收的值打印出来却是fOrgId。

原因:原来@JSONField是FastJSON的,只针对于FastJSON的那一套JSON序列化起作用,对于Spring的序列化是不起作用的。所以用换了@JsonProperty。
再看打印,诶?还不对,还是fOrgId。

点进去看服务接收方的那个类的toString被重写了
在这里插入图片描述
,大哥,不是吧,这么玩~。所以就这么用了两个注解。
但是。。。事情还没完,服务接收方还是不对,这是啥原因,想到@JsonProperty 在引包的时候有两个,是不是包引错了,,,嘿!!这么一换 还真是。。。
在这里插入图片描述
切记!!一定要引用第一个。

总结:
1.如果项目单纯只是spring项目没有使用FastJson框架的东西那么就使用@JsonProperty 而且Jackson功能全面,支持的数据格式包括JSON、XML、YAML、CSV等。它提供了丰富的注解如@JsonProperty、@JsonIgnore等来精确控制序列化和反序列化过程。
如果使用了FastJson那么就要用@JSONField,FastJSON以性能著称,尤其在解析和序列化速度上表现出色。它在高并发环境下具有较好的表现,因为其设计目标之一就是高性能。
2.重点在FastJson框架下@JsonProperty不起作用,在没有使用FastJson框架的时候@JSONField不起作用

这篇关于FastJson与JackSon 的碰撞。服务发送方与服务接收方字段不一致问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061624

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

MAVEN3.9.x中301问题及解决方法

《MAVEN3.9.x中301问题及解决方法》本文主要介绍了使用MAVEN3.9.x中301问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录01、背景02、现象03、分析原因04、解决方案及验证05、结语本文主要是针对“构建加速”需求交