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字符串時候起作用。