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

摘要:
Java实体类(humps)被映射到json数据(下划线),因为它们通常需要从前端接收json数据,而json数据通常使用下划线命名。后端不建议使用map来接收,因此需要使用自定义类来接收(如果参数太少,可以考虑使用内部类将所有参数类写入一个大类)。使用@JsonProperty或@JsonAlias@JsonProperty它直接定义为@JsonAlias。添加别名意味着,例如:@Datapub
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字符串时候起作用。

免责声明:文章转载自《Java实体类如何映射到json数据(驼峰映射到json中的下划线)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle 数据文件 reuse 属性 说明(转载)手把手教你反编译别人的APP下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

gson 生成的json字符串带u003c,u003d,u003e的解决方案(gson将实体类转json)

1.情景展示 如上图所示,使用谷歌的Gson将实体类转json字符串,如果实体类的属性值,出现大于号、小于号、等号等符号时,调用GsonBuilder进行转换时,这些符号会被强制转换成unicode编码。 如何解决这个问题? 2.原因分析 错误方式一:使用replaceAll() 错误方式二:使用iso-8859-1解码 3.解决方案 方式一:使用...

使用OQL“语言”构造ORM实体类的复杂查询条件

OQL”语言“ 是PDF.NET数据开发框架的实体对象查询语言,一直以来,ORM的复杂查询条件都是困扰ORM的问题,所以很多时候不得不舍弃ORM,直接手工拼接SQL。我们来看看OQL是怎么解决这些问题的,现在举一个今天同事遇到的问题: 有这样一个实体类 MyEntity,实体类的具体定义在此忽略,有兴趣的朋友请看我的博客。 MyEntity e=new ...

反射+枚举+freemarker,自动生成实体类,自动建表建索引(二)之建表建索引,注解和DatabaseMetaData 获取信息

接上一篇博文 反射+枚举+freemarker,自动生成实体类,自动建表建索引(一)之生成实体类,枚举详解,这篇博文介绍自动建表。 用反射+枚举+freemarker,自己实现的自动生成实体类和自动建立数据表建索引。用enum枚举作为数据表的配置文件,1个枚举就是1张表,根据枚举类,自动生成实体类,和自动建表建索引。 主要步骤和 上一篇博文差不多,就是...

JDBC实现从数据库中读取信息以表格的形式展示

方法都是通用的,要看你如何去灵活的运用!!! 本文以“新闻发布系统”为例 第一步:建立数据库(使用的是mysql数据库) 其中数据库信息为: 数据库名:news 表名:title,字段名分别为(序号、标题名称、创建者、创建时间) create table title( id int(2) primary key, name varchar(20), cre...

根据ID和parentID利用Java递归获取全路径名称

如下图所示,本文参考资源:https://jie-bosshr.iteye.com/blog/1996607 感谢大佬的无私奉献。 思路:定义一个方法getParentName参数为int类型的configId,返回类型为String类型.在方法getParentName内部进行如下操作:1 根据当前节点configId查询数据库,得到一条记录,存入实体...

C#-MVC开发常见异常处理

一、EF框架问题 错误的提示为:Model compatibility cannot be checked because the database does not contain model metadata.Model compatibility can only be checked for databases created using Cod...