使用fastjson實現物件的深複製

2021-09-24 04:24:50 字數 519 閱讀 7447

最近遇到乙個坑,之前的**將乙個訂單物件中的明細,乙個list,進行了分組。然後這個list就改變了。再往後,他們認為這個list沒變,又將這個list作為最終資料進行了傳送。這就導致這個明細回傳錯誤。

查出問題後,我就想,將這個物件如果賦值乙份的吧。應該就沒問題了。

這裡,一定要實現深複製,不然只進行淺複製的話,list內的值還是使用的同一塊記憶體中的。進行分組後,原引數還是會被改變。

所以這裡我想到用fastjson提供的序列化能力,先將物件序列化成乙個json字串,然後再反序列化回來。

這樣,相當於按照乙個字串序列化了乙個新物件,開闢了乙個新的記憶體用於存放這個物件的堆記憶體內容。這就不會導致原有物件的改變了。

具體**很簡單:

string liststr = jsonobject.tojsonstring(param.getdetailitems());

listlist = jsonobject.parsearray(liststr,dto.class);

FastJSON處理大物件

好久沒有寫部落格了,最近的筆記都整理到印象筆記了,等有時間了再移到csdn吧。今天寫一下fastjson。fastjson處理大的json物件或陣列時,單純用jsonobject jsonarray的api不利於效能。比如反序列化map物件對應的json string。jsonobject resp...

fastjson簡單使用

fastjson 是阿里巴巴的開源專案 主要是操作json 與 自定義物件,map,list之間進行的轉換 以下給出了 6種轉換 都是我自己封裝的 一點渣水平,封裝的 方法可以直接拿去用 我都已經測試過的 1.json 轉換 自定義物件 string json user user json.pars...

fastjson 使用技巧

當你有乙個欄位是字串型別,裡面是json格式資料,你希望直接輸入,而不是經過轉義之後再輸出,這時使用jsondirect true引數,如 import com.alibaba.fastjson.annotation.jsonfield public static class model若想將巢狀物...