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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM