FastJson整形資料反序列化的坑
在開發過程中,遇到了一個json資料反序列化的坑,具體程式碼如下:
1 String viewValue = "..............."; #這裡是json字串
2 JSONObject viewObject = JSONObject.parseObject(viewValue);
3 JSONObject videoObject = (JSONObject) viewObject.get("video");
4 Integer viewCount = new Integer(0);
5 if(videoObject.get("viewCount") != null) {
6 viewCount = (Integer) videoObject.get("viewCount"); #有時會報出異常
7 }
這裡的坑就出現在第6行程式碼,我這裡目標是要獲取viewCount的key對應的整形值,經過幾次測試也沒有發現什麼異常。但是當提交給測試被測試同學報出異常了。那麼具體原因是什麼?直白地說,fastjson在將整形的value值反序列化時,會根據值得具體長度生成不同的型別,一旦值超過Integer型的表達範圍就會反序列化成Long; 在Integer以內會反射為Integer。我測試的值都比較按照線上可能的資料範圍來測試的,而測試同學會更多覆蓋一些邊緣情況,於是就反序列化出了Long,但Long是不能強制轉化為Integer的。
那麼該如何處理?需要經過字串,再轉到Long就不會有什麼問題了,程式碼如下:
if(videoObject.get("viewCount") != null) {
viewCount = Long.valueOf(String.valueOf(videoObject.get("viewCount")));
}
需要說明的是,我這裡屬於比較新的版本:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
相關文章
- 【Fastjson】Fastjson反序列化由淺入深ASTJSON
- fastjson反序列化漏洞ASTJSON
- Fastjson 反序列化漏洞史ASTJSON
- Fastjson定製屬性的序列化和反序列化ASTJSON
- springbootredis自定義序列化方式(fastJson)Spring BootRedisASTJSON
- FastJson 序列化處理 null 值ASTJSONNull
- fastjson反序列化-JdbcRowSetImpl利用鏈ASTJSONJDBC
- Fastjson反序列化漏洞復現ASTJSON
- 淺談Gson和fastjson使用中的坑ASTJSON
- Fastjson 反序列化漏洞分析 1.2.25-1.2.47ASTJSON
- Fastjson反序列化漏洞分析 1.2.22-1.2.24ASTJSON
- Fastjson1.2.24反序列化漏洞復現ASTJSON
- 解決fastjson反序列化時報錯的問題ASTJSON
- FastJSON解析Json字串(反序列化為List、Map)ASTJSON字串
- python操作符及資料型別之整形Python資料型別
- 序列化踩坑
- jackson、fastjson、kryo、protostuff等序列化工具效能對比ASTJSON
- fastjson序列化日期自動增加了1年ASTJSON
- 巧用fastjson自定義序列化類實現欄位的轉換ASTJSON
- 高效的序列化/反序列化資料方式 Protobuf
- 烽火狼煙丨Fastjson反序列化漏洞風險提示ASTJSON
- 資料的序列化&持久化持久化
- 泛型的型別擦除後,fastjson反序列化時如何還原?泛型型別ASTJSON
- Fastjson2基礎使用以及底層序列化/反序列化實現探究ASTJSON
- Python中序列化/反序列化JSON格式的資料PythonJSON
- 關於fastjson出現反序列化遠端程式碼執行漏洞的通知ASTJSON
- 解析資料踩過的坑
- 2019年全球最常見整形外科手術(附原資料表)
- fastjson轉換json時,碰到的那些首字母大小寫轉換的坑!ASTJSON
- 序列化器(Serializers)踩坑記錄
- 資料解析器以及序列化和反序列化
- Oracle資料庫中遇到的坑Oracle資料庫
- 詳解電子表格中的json資料:序列化與反序列化JSON
- 序列化,資料庫存多個欄位資料資料庫
- 美萊:整形大資料揭祕中國人“顏值進化”歷程大資料
- 【FastJSON】解決FastJson中“$ref 迴圈引用”的問題ASTJSON
- python-45-ajax資料序列化Python
- Sqlalchemy 資料模型序列化(轉JSON)SQL模型JSON