第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Gson(泛型)如何“動態(tài)”反序列化類屬性ClassCastException

Gson(泛型)如何“動態(tài)”反序列化類屬性ClassCastException

牛魔王的故事 2019-05-23 10:59:35
這個問題實在是不知道怎么取標題異常如下:Exceptioninthread"main"java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMapcannotbecasttoXXX我舉例說明:已知有一個User類,包含了一些簡單的屬性publicclassUser{privateStringuserName;privateStringgender;//getset方法省略}然后我有一個專門用于數(shù)據(jù)傳輸?shù)膉son包裝類publicclassJsonMessage{privateIntegercode;privateStringmsg;privateTdata;//getset方法省略}然后我有一個主方法publicstaticvoidmain(String[]args){//有一個待序列化的json字符串StringjsonStr="{'code':123,'msg':'test','data':{'userName':'baofeidyz','gender':'male'}}";//然后使用Gson序列化Gsongson=newGson();JsonMessagemessage=gson.fromJson(jsonStr,JsonMessage.class);//然后在這里我嘗試獲取data中的數(shù)據(jù),就報//Exceptioninthread"main"java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMapcannotbecasttoUser}可是當我不使用泛型的時候就是OK的:我這里有一個新的json包裝類publicclassJsonMessage2{privateIntegercode;privateStringmsg;privateUserdata;//getset方法省略}然后我又新建了一個新的main方法:publicstaticvoidmain(String[]args){//還是那個待序列化的json字符串StringjsonStr="{'code':123,'msg':'test','data':{'userName':'baofeidyz','gender':'male'}}";//然后使用Gson序列化Gsongson=newGson();//這里換成了新的包裝類JsonMessage2message=gson.fromJson(jsonStr,JsonMessage2.class);//然后就成功獲取到了數(shù)據(jù)}代碼是我在segmentfault網(wǎng)頁現(xiàn)敲的,但是問題是和我實際問題一樣。個人覺得主要是我對泛型和Gson的序列化方式理解有問題,所以想請教一下各位,感謝!
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

自問自答了。
我解決了。
在Gson反序列化的過程中,如果你需要傳泛型需要這樣操作:
JsonMessagemessage=gson.fromJson(jsonStr,newTypeToken>(){}.getType());
其實我以前就遇到過這個問題,只是這次發(fā)生的場景變了,這個問題實際上是在寫SpringBoot的Controller的時候遇到的
最后的解決方案是修改傳入?yún)?shù)的key,需要和包裝類的屬性名相同才可以,不過建議徹底去除jackson改成集成gson會比較好
然后就可以非常簡單的使用@RequestBody來拿到數(shù)據(jù)對象
                            
查看完整回答
反對 回復 2019-05-23
?
夢里花落0921

TA貢獻1772條經(jīng)驗 獲得超6個贊

我試了一下,GSON2.7并沒有出現(xiàn)這個異常。
com.google.code.gson
gson
2.7
                            
查看完整回答
反對 回復 2019-05-23
  • 2 回答
  • 0 關(guān)注
  • 405 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號