关于序列化首字母大写的问题。使用了lombok,在对象序列化时,首字母为大写,不符合期待值,出现错误:
{"CName":"222","committeeCategory":"121"}
{"cName":"222","committeeCategory":"121"}
看了日志,前几个版本说修复了,但是还是没有到
原提问者GitHub用户HuShao96
Lombok 是一个很方便的 Java 工具,可以通过注解来自动生成 Java 类的 getter、setter 等常用方法,减少了开发者的重复劳动。在 Lombok 中,如果想要生成首字母小写的属性名,需要在属性上加上 @Getter、@Setter 注解,并设置参数为 AccessLevel.NONE 和 AccessLevel.PUBLIC,例如:
@Getter(AccessLevel.NONE) @Setter(AccessLevel.PUBLIC) private String cName; 如果你已经使用了 Lombok,但是在序列化时属性名的首字母却是大写的,可能是因为 Fastjson 的默认命名策略导致的。在 Fastjson 中,默认的命名策略是驼峰式命名,即将属性名的第一个字母转换为大写。如果需要将属性名的首字母转换为小写,可以通过设置 Fastjson 的命名策略来实现。
例如,可以使用 SnakeCase 风格的命名策略来将属性名转换为下划线分隔的形式,并且将属性名的首字母转换为小写。可以通过设置 JSON.DEFAULT_GENERATE_FEATURE 参数来实现:
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.UseSnakeCase.getMask(); 需要注意的是,在将属性名转换为下划线分隔的形式时,Fastjson 会将所有的字母转换为小写,因此在使用 SnakeCase 风格的命名策略时,需要确保全部使用小写的属性名。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。