jackson/fastJson boolean类型问题

1.我们以Person对象举个栗子,person有三个属性。name,age和isGay

@Data
public class Person {public Person(String name, int age, boolean isGay) {this.name = name;this.age = age;this.isGay = isGay;}private String name;private Integer age;private boolean isGay;
}

2.使用jackson和fastJson测试。首先实例化一个yaohenghui对象,然后分别使用jackson和fastJson解析成字符串。

    public static void main(String[] args) throws JsonProcessingException {Person person = new Person(11, true);ObjectMapper objectMapper = new ObjectMapper();String jacksonStr = objectMapper.writeValueAsString(person);String fastJsonStr = JSON.toJSONString(person);System.out.println("jacksonStr------" + jacksonStr);System.out.println("fastJsonStr------" + fastJsonStr);}

问题(一)当使用原始类型boolean,若字段以is开头,解析时is会被去掉。

上面的栗子运行的结果如下:

我们可以看到使用原始boolean时jackson和fastJson都将isGay字段的is去掉了。这是目前两者的解析机制决定,开发时需要注意。

问题(二)当jackson使用字段名转换注解@JsonProperty时,会出现isGay和gay两个字段。

person修改:

增加jackson和fastJson的字段名转换注解

@JsonProperty("isGay")

@JSONField(name = "isGay")

@Data
public class Person {public Person(String name, int age, boolean isGay) {this.name = name;this.age = age;this.isGay = isGay;}private String name;private Integer age;@JsonProperty("isGay")@JSONField(name = "isGay")private boolean isGay;
}

输出结果:

我们能看到,fastJson是正常的,但是jackson多了一个字段。

当我们将字段名由isGay改为gay:

@Data
public class Person {public Person(String name, int age, boolean isGay) {this.name = name;this.age = age;this.gay = isGay;}private String name;private Integer age;@JsonProperty("isGay")@JSONField(name = "isGay")private boolean gay;
}

这时结果恢复正常:

说明:

当使用包装类型Boolean时,无论字段名是isGay或者gay都能成功的解析成isGay或者gay,@JsonProperty("isGay")和@JSONField(name = "isGay")也能正常使用,没有任何问题。所以pojo中推荐使用Boolean。同时我们最好遵照阿里的规范,布尔类型字段的命名尽量不要带is。如下说明:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

狗窝里的小日子 ...

来,把平时作的菜菜整理下下: 1. 2. 3. 4. 5. 6. 7. 8.

Android直接用手机打包apk!

你没有看错,用手机浏览器访问Jenkins,就可以打包apk,并生成下载二维码,发送邮件通知测试人员下载,从此解放双手,告别打包测试。先上本人手机邮箱收到的打包成功通知效果图: 废话少说&#xff0c…

java中byte、short、char、boolean实际都是按照int处理的!

byte、char、short、boolean四种类型在汇编期或运行期间采取和int类型一样的存储方式,在计算时会先转换为int类型,后进行计算。所以两个short类型数据做算数运算,结果却为int类型。这主要是因为jvm的字节码为了简洁高效,设计时只使…

狗窝里的小日子- 2 ...

来,把平时作的菜菜整理下: 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.

优秀程序员必备素质——快速调试

你是否有过这些经历: 1.代码敲完了,刚想松口气,一运行程序,满满的Bug。 2.找啊找啊找,怎么找都找不到哪里出了问题。 3.调试了半天出不来,就开始便得心烦气躁。 4.一天连一个Bug也没调出来,…

Java程序编译运行过程

整体流程 1.首先由源程序文件编译成class文件。注意这里的源程序并不仅限于java程序,其他语言如果能够编译成class文件,并且符合jvm规范也能够在jvm上运行。 2.jvm将class文件拷贝到内存,解释成相应的机器语言运行。我们常用的hotspot虚拟机…

【TeeChart .NET教程】(七)使用函数

2019独角兽企业重金招聘Python工程师标准>>> 上一篇:【TeeChart .NET教程】(六)使用系列 【下载TeeChart.Net最新版本】 (一)功能类型 1.1 功能类型 TeeChart Pro功能是一个系列,几乎可以是任何…

Django的简介

一.MTV模型 Django的MTV模式: Model(模型):和数据库相关的.负责业务对象与数据库的对象(ORM) Template(,模板):放所有的HTML文件 模板语法:目的是将变量(数据库内容)如何巧妙的镶嵌到HTML页面中 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外Django还有一个…

狗窝里的小日子- 3 ...

来,把平时作的菜菜整理下: 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.

5种流行的Linux发行版:你更喜欢哪一个呢?

现如今,对于各种类型的用户(如桌面用户、服务器管理员、图形设计者等)而言Linux已经成为一种最流行的操作系统。Linux是免费且开源的,任何人都可以建立和编译它的源代码,并将它分发给别人。这就是为什么Linux会有很多个…

基于ASP.net耳机网店商城系统(前台页面+后台页面)

源码https://github.com/doublekai/user web文件夹 转载于:https://www.cnblogs.com/doublekai/p/9778246.html

狗窝里的小日子- 4 ...

来,把平时作的菜菜整理下: 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.

[Web 前端] 解决因inline-block元素导致的空白间距和元素下沉

cp from : https://www.jianshu.com/p/617e78a27c88 ** 前言: ** CSS 中的 display:inline-block 是笔者最为喜欢的元素之一,可以将原本占据一行的块级元素,转变为可以并列显示的行内块级元素。 display:inline-block 常被用来代替float进行页…

狗窝里的小日子- 5 ...

来,把平时作的菜菜整理下: 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.

Linux(RadHat)基础学习—FTP服务

RedHat下的ftp服务 1.ftp服务的启动 1.编辑文件:vim /etc/sysconfig/selinux第6行selinuxdisabled保存退出。重启主机。 2.安装vsftpd yum install vsftpd -y 安装完成: 开启ftp服务: systmctl start vsftpd systemctl enable vsftpd 3.防火墙…

手机贴膜利润超百倍 消费者为无用功能高价买单

摘要:市场研究机构IDC的最新报告预计,2013年智能手机出货量将首次超过功能手机,国家工信部的数据显示,截至2011年底,我国智能手机用户已超过1.9亿。记者调查发现,在从事手机贴膜的摊点上,摊主多…

java内存区域及静态常量池、运行时常量池介绍

java内存区域介绍 我们先来介绍下虚拟机运行时数据区的结构: 我们项目中的每一个线程在运行时,都会有拥有自己独立的栈数据和程序计数器。程序计数器可以看作字节码命令的指示器,记录了下个需要执行的字节码指令,栈数据主要分为本…

狗窝里的小日子- 6 ...

来,把平时作的菜菜整理下: 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.

数据库常见面试题总结

参考如下: 数据库常见面试题(开发者篇) 数据库优化 SQL数据库面试题及答案 常见面试题整理--数据库篇转载于:https://www.cnblogs.com/threetop/p/9425172.html

狗窝里的小日子- 7 ...

来,把平时作的菜菜整理下: 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.