Javebean声明boolean类型isXXX解析异常
来源:互联网 发布:河南大学软件学院学费 编辑:程序博客网 时间:2024/06/06 02:37
JavaBean规范中规定boolean
的getter/setter
为isXXX/setXXX
,包装类Boolean
的getter/setter
为getXXX/setXXX
,其中XXX
为变量名(IDE生成代码默认就是这种格式)。
当编写代码出现不规范命名,将boolean
变量声明为isXXX
时,为了保证序列化与反序列化,需将isXXX/setXXX
改为isIsXXX/setIsXXX
,然而IDE并不会为我们做这些。
此时如果使用老版本fastjson进行反序列化时就有可能出现问题,因为fastjson默认使用setter
方法为对象的变量赋值。 解决方案简单粗暴,更新版本fastjson-android>=1.1.49或者使用JSONField注解指定name。 然而使用Gson就没有问题,因为Gson默认使用反射field来为变量赋值。 因此使用Gson时要在混淆配置中保留fields
,使用fastjson时则要保留set*
方法。
我遇到的问题还略坑,使用老版本fastjson且不使用注解在未开启混淆的情况下boolean isXXX属性是能够正确解析的,开启混淆后就不行了。此时直接加注解是可以的,更新到新版本后不加注解也可以,想想也是心累,fastjson的文档和更新日志都没找到相关的说明。所以,在无法避免这种不规范命名时,请一定要 使用注解 指定一下。
写了个简单的Test Case放到了github,ParseTest
测试在开启混淆并配置混淆规则的情况下,fastjson的不同版本解析json的结果。以及使用Gson解析的情况。分别位于不同分支。
关于此问题fastjson的issue中还有一个大家争论的问题:是要求我们严格遵守规范还是fastjson提供兼容?
答案你已经知道了。 链接 https://github.com/alibaba/fastjson/issues/278
转载网址:http://www.cnblogs.com/xulingfeng/p/6143317.html
- Javebean声明boolean类型isXXX解析异常
- JSONObject解析Boolean类型出现异常
- JavaBean的boolean isXXX反序列化问题
- 使用isXxx方法判断地址类型
- 使用isXxx方法判断地址类型
- Boolean类型
- boolean类型
- Boolean类型
- 使用Boolean类型同步锁引起异常的分析
- javabean 规范里 boolean 属性的 getter 可以写成 isXXX ,可是这样的 getter 不方便使用。
- Dorado 7中的DataType绑定的entity中不能有isxxx的boolean型变量
- ajax接受后台传输boolean类型,解析为String类型解决办法
- Javascript的Boolean类型
- javascript 中的Boolean类型
- Javascript的Boolean类型
- ECMAScript中的Boolean类型
- php中的boolean类型
- oracle有Boolean类型
- Bootstrap模态框插件
- mybatis入门中
- IMWeb前端秋招训练营--前端作业6
- Kotlin相关基础及与Java的不同 的 笔记(两)
- 剑指offer 5---从尾到头打印单链表
- Javebean声明boolean类型isXXX解析异常
- 利用jieba对多个中文txt文本进行分词
- nodejs 安装node-sass报错(淘宝镜像安装)
- spring报错:Unexpected exception parsing XML document from class path resource [Beans_annotation.xml]
- hdu 3642 求长方体的体积交 (线段树 +离散化+扫描线)(重点!模板!)
- Java_基础—Map集合的功能概述
- wklken k-vim 安装提示
- Java一些关键字的理解概括
- selenium使用robot对象操作键盘