[BUG]为什么fastjson2序列化时个别字段首字母变成了大写,但是fastjson却是正常的
问题描述
为什么fastjson2序列化时个别字段首字母变成了大写,但是fastjson却是正常的?具体:
Bean Field
Serialize Result
环境信息
- OS信息: [e.g.:Mac]
- JDK信息: [e.g.:Openjdk 1.8.0_341]
- 版本信息:[e.g.:Fastjson2 2.0.20]
重现步骤
始终重现,JSON.toJSONString(bean)
期待的正确结果
期待应该严格按照bean field序列化
相关日志输出
附加信息
同样遇到跟你一样的bug,正准备提的,看到你提了就算了,暂时的修复方法就是添加JSONField来处理
fastjson2缺省的PropertyNamingStrategy是和java.beans.Introspector#decapitalize方法行为是一样的,如果你要修改为fastjson1的缺省方式,可以这样做:
JSONFactory.getDefaultObjectWriterProvider().setNamingStrategy(PropertyNamingStrategy.CamelCase1x)
+1
java的 Introspector.decapitalize("sCode") 输出的是小写 不会转成大写
java的 Introspector.decapitalize("sCode") 输出的是小写 不会转成大写
@win32fk 那是因为你的字段名是 "sCode",但是方法名是"getSCode()"。
Java 规范是根据 getter 方法名来解析属性名称的,而不是字段名称 !
去掉 "get" 前缀,Introspector.decapitalize("SCode") 得到的结果就是首字母大写的。
BTW:现在的 Java开发人员 都不需要学习 Java Bean 规范了么 ?