Gson反序列化Map,整型自動轉換為浮點型

2021-09-07 20:33:38 字數 1676 閱讀 2469

場景:將map結果序列化後放入redis快取,發現反序列化後integer型別自動轉換成了double型別

@test

public

void

testjsondefault() );

showmap(map);

}

執行結果:

a-aa-string

b-11.0-double

/**

* json字串轉bean物件**

@param

json

* @param

cls *

@return

*/public

static

t fromjson(string json, classcls)

public

static

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

}

繼續測試:

@test

public

void

testfromjson() );

showmap(map);

}

執行結果:

a-aa-string

b-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...