GSON處理JSON數據中大的Long型的數據說明

今天在用GSON進行序列化及反序列時,發現數據不對,
原因爲是使用了18位的Long型數據做爲ID,以免重複
數據序列化完後之後,類似於
String value = "{\"id\":170802150000000041,\"batchId\":56,\"datas\":\"xxxx\"}";
反序列化時,因爲gson默認會把數值,byte,int,short,long,float數據反序列化時,變成double類型
這時,再得到對應的id值,就出現了不對的情況
因爲:
Double.MAX_VALUE=0x7fefffffffffffffL;
Long.MAX_VALUE=0x7fffffffffffffffL;
解決辦法有幾種
第一種.Gson序列化時指定Long類型的數據序列化方式爲字符串方式
GsonBuilder gb = new GsonBuilder().serializeNulls().setDateFormat("yyyy-MM-dd HH:mm:ss");
gb.setLongSerializationPolicy(LongSerializationPolicy.STRING);
採用字符串方式序列化Long型值之後,再用Long.parse解析字符串爲Long即可

第二種:直接用字符串爲大的Long型數據的字段類型,需要的地方用Long.parse轉換

第三種,換成其它JSON解析類,如fastJosn,jackson
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章