Java JSON 不同的field 要轉成同一個DTO

 

Java JSON 不同的field 要轉成同一個DTO

java
json
jackson

在用 jackson JSON 常有種情境就是不同的來源JSON要轉成同一個DTO物件 如下

{ "e": "ORDER_TRADE_UPDATE", "T": 1689244751953, }
{ "excute": "ORDER_TRADE_UPDATE", "time": 1689244751953, }

這兩種格式都希望轉成

@Data public class DTO1 { private String excute; private Long time; }

快速的解決辦法有兩個

方法一 利用@JsonAlias

@Data public class DTO1 { @JsonAlias({"excute", "e"}) private String excute; @JsonAlias({"time", "T"}) private Long time; }

方法二 利用 seter

@Data public class DTO1 { private String excute; private Long time; public void setT(Long t) { this.time = t; } public void setE(String e) { this.excute = e; } }

利用方法二 可以解耦合

如果不想讓主要的DTO 寫太多不同情境的 CODE 可以改成如下

@Data public class DTO1 { private String excute; private Long time; } public class DTO2 extends DTO1{ public void setT(Long t) { this.time = t; } public void setE(String e) { this.excute = e; } }

這樣DTO1 就可保持clean 之後要拔出來也必較方便


md 

留言

這個網誌中的熱門文章

angular 如何Http 如何設定 CORS (Cross-Origin Resource Sharing)

Google Map 單車路徑計算坡度和角度小工具

Google URL Shortener API 快速教學