場景:將map結果序列化後放入redis快取,發現反序列化後integer型別自動轉換成了double型別
@testpublic
void
testjsondefault() );
showmap(map);
}
執行結果:
a-aa-stringb-11.0-double
/*** json字串轉bean物件**
@param
json
* @param
cls *
@return
*/public
static
t fromjson(string json, classcls)
publicstatic
class maptypeadapter extends typeadapter
in.endarray();
return
list;
case
begin_object:
mapmap = new linkedtreemap();
in.beginobject();
while
(in.hasnext())
in.endobject();
return
map;
case
string:
return
in.nextstring();
case
number:
/*** 改寫數字的處理邏輯,將數字值分為整型與浮點型。
*/double dbnum =in.nextdouble();
//數字超過long的最大值,返回浮點型別
if (dbnum >long.max_value)
//判斷數字是否為整數值
long lngnum = (long
) dbnum;
if (dbnum ==lngnum)
else
case
boolean:
return
in.nextboolean();
case
null:
in.nextnull();
return
null
;
default
:
throw
newillegalstateexception();}}
@override
public
void write(jsonwriter out, object value) throws
ioexception
}
繼續測試:
@testpublic
void
testfromjson() );
showmap(map);
}
執行結果:
a-aa-stringb-11-long
gson反序列化localdateTime格式
如果需要反序列化內容是 yyyy mm dd hh mm ss 格式 那麼使用網上搜出來的 gson gson new gsonbuilder registertypeadapter localdatetime.class,new jsondeserializer create 會報錯轉化錯誤。大概...
Gson 序列化物件和反序列化 例項
from 用到的類 class netnews public string getresult public void setresult string result public arraylistgetdata public void setdata arraylistdata public s...
Gson反序列化 int型別變double型別
經網上資料查詢,序列化的邏輯在 com.google.gson.internal.bind.objecttypeadapter 類中。將原始碼拷貝出來,修改 number 處理邏輯。override public object read jsonreader in throws ioexceptio...