问题描述
使用 fastjson 进行 JSON 序列化存储到数据库后,发现 JSON 字符串“莫名其妙地”多了一些属性。
引起原因
基本类型的布尔类型以 is 开头的属性使用fastjson格式化时候都会改变,原因是 fastjson 通过反射虽然有能力识别真实的属性名,但是实际操作时会根据 getter 方法反推出属性名,造成转为 JSON 字符串时和实际属性名存在偏差。
解决方法
遵循《阿里巴巴 Java 开发手册》规范即可解决该问题。
手册中强调任何布尔类型的变量都不要加 is 前缀,基本类型布尔属性反向解析时,会误以为不带 is 导致获取不到属性,抛出异常。