歡迎您光臨本站 註冊首頁

Java對象轉json JsonFormat註解

←手機掃碼閱讀     火星人 @ 2020-05-08 , reply:0

寫在前面,首先,我用的java轉json序列化的工具是java開源的jackson。
今天在做後端接口的時候,發現獲取的json對象中少了幾個屬性,因為其他的接口都能得到正確的json,所以很快就找到了問題所在,先上代碼
public class ChargeDto implements Serializable { private static final long serialVersionUID = -4617215025083571608L; protected Integer cId; protected String Item; protected Double Amount; protected Integer Vcid; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") protected Date CreateTime; protected String CreateEName; }
{ "status": 200, "message": "成功", "data": [ { "CreateTime": "2020-05-04 01:41:19" }, { "CreateTime": "2020-05-04 02:10:11" }] }
是的,這裡我的類中只有屬性,沒有getter、setter方法,所以獲取的json中少了一些屬性。
解決方法一:後來我將類中的所有屬性加上了getter、setter方法之後得到了正確的json對象。
{ "status": 200, "message": "成功", "data": [ { "cId": 1, "item": "掛號", "createEName": "醫生1", "createTime": "2020-05-04 01:41:19", "amount": 5, "vcid": 1 }, { "cId": 2, "CreateTime": "2020-41-04 01:41:38", "item": "處方結算", "createEName": "醫生1", "createTime": "2020-05-04 02:10:11", "amount": 122, "vcid": 1 }] }
雖然很快解決了,但是我還是上網查了下原因,然後我查閱知曉對於我用的jackson來說,需要類中有getter方法。是的,雖然我一次性把Setter方法也加上了,但是對於jackson將java對象轉json來說,只要有Getter方法就行了。甚至是不需要有屬性!
注意:java對象轉成json成立的基本條件只需要有get方法!!
然後我發現我一開始雖然丟失了幾個屬性,但是我也是有屬性轉為了json的,就是CreateTime。於是我就注意到了我在CreateTime屬性上加的註解@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss"),我想著是不是和這個註解有關,於是我將Getter方法刪去,在其他屬性上加上了註解
public class ChargeDto implements Serializable { private static final long serialVersionUID = -4617215025083571608L; protected Integer cId; protected String Item; @JsonFormat protected Double Amount; @JsonFormat protected Integer Vcid; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") protected Date CreateTime; protected String CreateEName; }
然後在json中成功都得到了該屬性,
{ "status": 200, "message": "成功", "data": [ { "Amount": 5, "Vcid": 1, "CreateTime": "2020-04-04 01:41:19" }, { "Amount": 122, "Vcid": 1, "CreateTime": "2020-04-04 01:41:38" }] }
所以,解決方法二:在你需要轉為json的屬性上加上@JsonFormat註解即可


[火星人 ] Java對象轉json JsonFormat註解已經有252次圍觀

http://coctec.com/docs/javascript/show-post-233353.html