前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
1. 項目中有個接口的數據是從緩存中讀取再組成JSON 格式返出,原本緩存中數據是這樣的:
用Gson 組成JSON?后,數值部分都成了Double類型,這不是我要的效果。
// 緩存中取String json = _jedisClient.get("RICHER_TRAN_RECORDS_GIVE"+user.getId());if (StringUtils.isNotBlank(json)){resultMap = new Gson().fromJson(json, new TypeToken<Map<String,Object>>(){}.getType());
數值部分成了Double類型,即:
?
2. 似乎Gson 默認會把數值轉化為double。于是我只好再次對數據循環處理:
// 方式一 : gson轉換默認是double類型 ,去掉70.0 這種數據的小數位Set<String> keySet = resultMap.keySet();for(Iterator<String> it = keySet.iterator();it.hasNext();){String key = it.next();if(resultMap.get(key) instanceof Double){resultMap.put(key, ((Double)resultMap.get(key)).intValue());}else{List<Map<String, Object>> list = (List<Map<String, Object>>)resultMap.get(key);for(Iterator<Map<String, Object>> mapIt = list.iterator();mapIt.hasNext();) {Map<String, Object> map = mapIt.next();Integer format = ((Double)map.get("format")).intValue();map.put("format", format);}}}// 方式二 : gson轉換默認是double類型 ,去掉70.0 這種數據的小數位Iterator<Entry<String,Object>> iter = resultMap.entrySet().iterator(); while(iter.hasNext()){ Entry<String,Object> entry = iter.next(); Object val = entry.getValue();if(val instanceof Double){val = ((Double) val).intValue();entry.setValue(val);}else{String key = entry.getKey();Object keyval = resultMap.get(key);List<Map<String, Object>> list = (List<Map<String, Object>>)keyval;Iterator<Map<String, Object>> it = list.iterator();while(it.hasNext()){Map<String,Object> map = it.next(); Integer format = ((Double)map.get("format")).intValue();map.put("format", format);}}}
這樣去掉數值的小數部份。
3.僅以此作為記錄。希望有更簡單的辦法處理這種情況,最好是組成JSON時也能不改變原數據類型,如果有網友知道,希望能留言告訴我,謝謝
?