簡體   English   中英

使用Gson序列化POJO

[英]Use Gson to serialize a POJO

我使用GSON序列化POJO -更改對象之前和之后。

由Struts2設置的更改后的名稱(稱為A)可以輕松地序列化到Json。

雖然更改前的POJO無法通過iBatis(稱為B)從數據庫中獲取,但無法進行序列化。

錯誤消息顯示:忘記注冊類型適配器?

我已經閱讀了Gson API。 但是我不認為為每個POJO注冊一個類型適配器是一個好主意,是什么使B無法序列化?

我為POJO編寫了一個clone(),從B克隆的對象也可以完成。

這令人困惑...有人可以回答我嗎?

更改之前(B的克隆):

{"id":"6429B5329C544711A9848AF243D10E4E","idType":"未選擇","firstDate":"Feb 29, 2012 12:00:00 AM","name":"testetes","gender":"男","phone":"553223","city":"未選擇","ocup":"未選擇","nation":"未選擇","famStru":"未選擇","infSouc":"未選擇","creater":"EE4783A6272A4B62A5CC68DB3C11FE1E","createDate":"Feb 29, 2012 12:00:00 AM","purpose":"未選擇","education":"未選擇","income":"未選擇","cars":"未選擇","acptCarpRent":"未選擇","acptCarpPrice":"未選擇","handStand":"未選擇","intentHouse":"未選擇","intentArea":"未選擇","intentLayout":"未選擇","nextDate":"Mar 7, 2012 12:00:00 AM","wuyeType":"未選擇","attentionPro":"958B9E093A84415B901900C2DA25C712","ordinaryTraffic":"未選擇","attentionPoint":"未選擇","buyDate":"未選擇","cityArea":"未選擇","lastUpdate":"Feb 29, 2012 12:00:00 AM","lastModifier":"EE4783A6272A4B62A5CC68DB3C11FE1E","saler":"A4FB4877DC2945E980477544A955B57F","state":"意向","status":"0"}

修改后(A):

{"id":"6429B5329C544711A9848AF243D10E4E","idType":"未選擇","firstDate":"Feb 29, 2012 12:00:00 AM","visitMode":"","name":"testetes","gender":"男","telPhone":"","phone":"553223","fax":"","adrs":"","postCode":"","email":"","workUnit":"","city":"未選擇","media_id":"","ocup":"未選擇","idNum":"","nation":"未選擇","famStru":"未選擇","infSouc":"未選擇","createDate":"Feb 29, 2012 12:00:00 AM","idAdr":"","purpose":"未選擇","education":"未選擇","income":"未選擇","cars":"未選擇","acptCarpRent":"未選擇","acptCarpPrice":"未選擇","handStand":"未選擇","intentHouse":"未選擇","intentArea":"未選擇","intentLayout":"未選擇","customerDetail":"","wuyeType":"未選擇","attentionPro":"958B9E093A84415B901900C2DA25C712","ordinaryTraffic":"未選擇","attentionPoint":"未選擇","buyDate":"未選擇","cityArea":"未選擇","lastUpdate":"Mar 11, 2012 2:58:04 PM","lastModifier":"00000000000000000000000000000000","saler":"A4FB4877DC2945E980477544A955B57F","state":"意向"}

聽起來您的POJO屬於客戶類型? 克隆對象時,您正在創建一個新的Customer,Gson可以對其進行序列化。 但是,當您從數據庫中獲取同一對象時,它不是標准的Customer對象。 相反,它是一個包含一些持久性信息的子類,例如對象的類。

可能最簡單的解決方案是使用Gson的@Expose批注。 如果使用new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()創建Gson對象,則可以使用@Expose標記要序列化的每個Customer字段。 其他任何字段,包括持久性框架的子類的字段,都不會被序列化。

布蘭登是對的。 如果您不想使用任何注釋或修改POJO類,這是另一個解決方案。 這可能對其他任何人都有幫助。

Type typeOfSrc = new TypeToken<A>() {}.getType(); //this helps for generic one.
gson.toJson(obj, typeOfSrc); or gson.toJson(obj, A.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM