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")
是testFlag
和test_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字符串时候起作用。