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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

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

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

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

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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