开发者社区> 问答> 正文

关于fastjson2 序列化首字母大写的问题。

关于序列化首字母大写的问题。使用了lombok,在对象序列化时,首字母为大写,不符合期待值,出现错误:

{"CName":"222","committeeCategory":"121"}

{"cName":"222","committeeCategory":"121"}

看了日志,前几个版本说修复了,但是还是没有到

原提问者GitHub用户HuShao96

展开
收起
后端老大 2023-04-21 11:10:04 277 0
2 条回答
写回答
取消 提交回答
  • 生成的方法就是getCName(),这个符合javaBean的规范

    原回答者GitHub用户wenshao

    2023-04-21 14:08:41
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    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 风格的命名策略时,需要确保全部使用小写的属性名。

    2023-04-21 11:14:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载