今天在用gson進行序列化及反序列時,發現資料不對,
原因為是使用了18位的long型資料做為id,以免重複
資料序列化完後之後,類似於
string value = "";
反序列化時,因為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
Gson解析json資料
1 解析單個物件 json字串如下 封裝解析的物件 public class nbamatchs public void setformatdate string formatdate public string getdate public void setdate string date pub...
json資料解析(gson)
string json type type new typetoken gettype suppresswarnings unchecked mapdata map new gson fromjson json,type iterator iterator data.entryset iterato...
Gson解析json資料
使用gson解析json資料 1.當json資料是jsonobject時對應大括號 2.當json資料是jsonarray時對應中括號 person name xiaoming,age 1,address meiguo,colorstring null,height 0 person name xi...