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。如下说明:
jackson/fastJson boolean类型问题相关推荐
- 简单易懂的Json的使用教程(jackson/fastjson)
Json的使用 前言 写好了一个项目,总结一下jason的使用,String类型的数据与Jason类型的数据之间相互转化的json解析工具有:Jackson,阿里巴巴的fastjson.本篇文章着重介 ...
- 22-05-29 西安 javaweb(11) ajax、axios、gson/jackson/fastjson
ajax 异步的JavaScript和XML js中的一个技术,实现前后端分离,前后端分离就是分服务器部署,彻底舍弃了thymeleaf. ajax中必须使用响应浏览器数据,不能是请求转发和重定向 ...
- 深度对比Jackson和Fastjson,最终我还是选择了...
点击关注公众号,Java干货及时送达 来源:cnblogs.com/larva-zhh/p/11544317.html 为什么要替换fastjson 框架选型 替换fastjson Deseriali ...
- jackson、fastjson、kryo、protostuff等序列化工具性能对比
简介 实际项目中,我们经常需要使用序列化工具来存储和传输对象.目前用得比较多的序列化工具有:jackson.fastjson.kryo.protostuff.fst 等,本文将简单对比这几款工具序列化 ...
- 主流JSON引擎性能比较(GSON,FASTJSON,JACKSON,JSONSMART)
JsonPerformanceVS 主流JSON引擎性能比较(GSON,FASTJSON,JACKSON,JSONSMART) 文章目录 JsonPerformanceVS 前言 测试目的: Purp ...
- 废弃fastjson!大型项目迁移Gson保姆级实战
前言 本篇文章是我这一个多月来帮助组内废弃fastjson框架的总结,我们将大部分Java仓库从fastjson迁移至了Gson. 这么做的主要的原因是公司受够了fastjson频繁的安全漏洞问题,每 ...
- 大型项目废弃fastjson迁移至Gson保姆级攻略
前言 大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀. 在被大家取关之前,我立下一个"远大的理想",一定要在这周更新文章.现在看来,flag有用了... 本篇文章是我这一个多月 ...
- fastjson list转json字符串_程序员:JSON、JSONObject 与 JSONArray 简单讲解
fastjson简介 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 ...
- 常用json框架介绍和Jackson返回结果处理
常用json框架介绍和Jackson返回结果处理 简介:介绍常用json框架和注解的使用,自定义返回json结构和格式 1.常用框架 阿里 fastjson,谷歌gson等 J ...
最新文章
- RabbitMQ 简介以及使用场景
- R语言绘制堆叠面积图
- 深入解析和反思携程宕机事件
- Guava RateLimiter限流源码解析和实例应用
- ASP.NET MVC5 高级编程 第3章 视图
- 传值类型_what?你竟然不知道C#中的方法及参数的类型解析!那还不快来瞅瞅
- 机器视觉:Caffe Python接口多进程提取特征
- android开机自动打开微信小程序,Android APP拉起小程序界面 (微信未启动 打不开)...
- 为什么会有那么多人放弃编程?
- 苹果为什么收购英特尔手机基带业务?库克解释了一下
- 20个使用柔和的色调的优秀网站设计示例
- shell-最近7天目录
- 基于CNN的中文文本分类算法(可应用于垃圾文本过滤、情感分析等场景)
- 国际图形学大会(SIGGRAPH)2017届主席竞选答辩是如此场景
- windows进程间通信
- 学习笔记-状态方程精确离散化
- 爬取大麦网演出信息保存为CSV文件并制作词云
- 在本地如何启动Vue项目
- 石膏板建筑材料英国UKCA认证—EN 520
- 前端网络——get和post的区别
热门文章
- 广州科目三路考经历与注意事项分享
- Jackson使用:String 与对象互转、Jackson 从 json 字符串转换出对象
- iOS有哪些数据类型/基本数据类型?
- tomcat是否有必要配置环境变量(摘)
- 总结Selenium WebDriver中一些鼠标和键盘事件的使用
- EcmaScript对象克隆之谜
- SharpZipLib 压缩ZIP导出
- 解决pip安装模块报错Cannot fetch index base URL http://pypi.python.org/simple/
- ForkJoinPool 学习示例
- js作用域与作用域链