Java实体类如何映射到json数据(驼峰映射到json中的下划线)

Java实体类(驼峰)映射到json数据(下划线)
  • 由于经常需要接收前端的json数据,而json数据一般都是使用下划线命名的。后端又不太建议使用map接收,所以就需要用到使用自定义类来接收(如果参数过少,可以考虑使用内部类,将所有参数类写到一个大类中)

  • 使用@JsonProperty@JsonAlias

    • @JsonProperty 直接定义成别名
    • @JsonAlias添加别名的意思
  • 例如:

    @Data
    public class MyRequestParam {
    @Data
    public static class TestParam {
    // @JsonAlias("test_flag")
    @JsonProperty("test_flag")
    private boolean testFlag;
    }
    }

使用@RequestBody MyRequestParam.TestParam flag来接收json参数时候,只能接收到test_flag的值(使用true测试,因为boolean值没有=false),使用testFlag作为json字段的键是接收不到的。

而注解@JsonAlias("test_flag")testFlagtest_flag做键都可以接收到。


返回json数据时候,也即使用对象或者result类中的object类型返回对象数据时候:

  • @JsonProperty也会起作用
  • @JsonAlias只会在接收时候起到起小名的作用。

注:使用@JsonProperty时候,如果使用fastjson工具类进行处理,比如:

JSON.toJSONString(obj);
JSONObject.toJSONString(obj);

出来的结果依旧是testFlag

当然fastjson对于这种情况也给出了一个注解,那就是@JSONField(name = "test_flag"),在属性上面添加注解,在使用json工具时候也可以对应转成想要的字段名了。


总结:

  • @JsonProperty 在接收前端和返回给前端字段时候起作用且只能使用定义的别名
  • @JsonAlias 只在接收前端数据数据时候起作用且本身名字和定义的别名都可以使用。
  • @JSONField(name = "name") 当需要使用json工具类进行转json字符串时候起作用。
posted @   Codorld  阅读(5627)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示