日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gson将字符串转map时,int默认为double类型

發布時間:2025/4/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gson将字符串转map时,int默认为double类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

gson能夠將json字符串轉換成map, 但是在轉成map時, 會默認將字符串中的int , long型的數字, 轉換成double類型 , 數字會多一個小數點 , 如 1 會轉成 1.0

Gson gson = new Gson();

int , long -> double

為了不讓gson進行這樣的轉換, 我們需要自定義gson的轉換適配器TypeAdapter, 通過registerTypeAdapter函數, 對類型進行注冊, 需要注意的是 , 在注冊的類型(包括泛型), 需要跟你使用的類型, 完全一致, 否則可能會無法匹配, 得不到想要轉換的結果.

獲取對象的類型, 這里可以使用下面的方法?
new TypeToken<TreeMap<String, Object>>(){}.getType()?
或者直接寫成?
Map.class

需要gson解析的類型 ,?
new JsonDeserializer<TreeMap<String, Object>>() ;?
這時需要重寫他的deserialize方法, 就是將其中json手動解析成map , 不對數據進行處理

Gson gson = new GsonBuilder().registerTypeAdapter(new TypeToken<TreeMap<String, Object>>(){}.getType(), new JsonDeserializer<TreeMap<String, Object>>() { @Override public TreeMap<String, Object> deserialize( JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { TreeMap<String, Object> treeMap = new TreeMap<>(); JsonObject jsonObject = json.getAsJsonObject(); Set<Map.Entry<String, JsonElement>> entrySet = jsonObject.entrySet(); for (Map.Entry<String, JsonElement> entry : entrySet) { treeMap.put(entry.getKey(), entry.getValue()); } return treeMap; } }).create();

?

在創建完gson之后, 使用時注意自己注冊的type類型 , 這時轉換出的int 不會變成double

TreeMap<String, Object> map =gson.fromJson(json, new TypeToken<TreeMap<String, Object>>(){}.getType());

轉載于:https://www.cnblogs.com/yueguanguanyun/p/8435196.html

總結

以上是生活随笔為你收集整理的Gson将字符串转map时,int默认为double类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。