發佈JsonFileConvert類庫用於list和json格式文件相互轉換

JsonFileConvert

將大數據量list 轉換爲json文本文件和將大數據量json文本文件(GB大小也不在話下)轉換爲list的類庫

0 適用場景

可用於將單個表結構數據導出爲json格式文本文件,內部實用了批次處理所以支持大數據list序列化,
將json格式文本文件反序列化爲list,json文本文件大小不受限制,讀取文本文件採用了數據塊讀取技術,否則的將文本文件全部加載到內存裏面容易耗盡 內存。
反序列化後的數據list稍作加工就可以方便導入到表中。
100萬對象的序列化後生成的文本文件大概有500~8000M,實際看類的複雜程度,壓縮後也就10M左右。

1 依賴要求

C# .netFramework2.0 以上,目前依賴於Swifter.json類庫,因爲目前序列化和反序列化這個類庫效率最高,測試裏面有對比Newtonsoft.json和FastJson

2 類庫代碼結構

JsonFileConvert項目爲發佈使用類庫,Test項目用於各個json組件跑測試。

3 Newtonsoft.json,Swifter.json,fastJson 序列化爲json文件時間對比

10萬個object的List序列化爲json文本文件耗時對比列表,單位(秒)

次數 Newtonsoft.json Swifter.json fastJson
1 2.65 1.78 4.22
2 2.87 1.53 4.42
3 2.89 3.9 6.96
4 3.66 1.62 4.70
5 3.32 1.97 6.83
6 3.46 1.59 3.45
7 2.99 1.66 6.39
8 3.11 1.50 3.18
100萬個object的List序列化爲json文本文件耗時對比列表,單位(秒),100w比較穩定只測試3次足夠
次數 Newtonsoft.json Swifter.json fastJson
1 46.14 40.81 50.51
2 43.75 34.59 50.01
3 41.91 38.23 51.99

4 Newtonsoft.json,Swifter.json,fastJson 將文本json文件反序列化爲list時間對比

10萬個jsonString的文本文件反序列化時間對比單位(秒),測試8次
次數 Newtonsoft.json Swifter.json fastJson
1 16.53 6.83 9.57
2 15.97 6.76 8.91
3 16.48 6.35 9.14
4 17.55 6.69 9.27
5 17.84 5.85 9.14
6 17.20 6.26 9.19
7 14.82 6.56 9.64
8 17.05 6.10 9.47
100萬個jsonString的文本文件反序列化時間對比單位(秒),測試3次
次數 Newtonsoft.json Swifter.json fastJson
1 178.81 53.32 88.61
2 158.89 52.01 89.13
3 140.72 56.83 83.11

經過測試比對發現Swifter.json做序列化和反序列化效率突出,所以這類庫選擇了它作爲依賴組件。

5 測試代碼說明

Test項目Program->  SaveTest(JsonToolType.Newtonsoft); 方法爲測試將list序列化後保存爲json.txt文本文件,可以修改裏面的生成list數量來測試
Test項目Program->   ConvertTest(JsonToolType.FastJson);方法爲測試將json.txt文本文件反序列化爲list
JsonToolType枚舉類型定義如下
     public enum JsonToolType
    {
        Newtonsoft = 1,
        Swifter = 2,
        FastJson = 3,
    }

類庫github地址: https://github.com/SaFaJim/JsonFileConvert

最後感謝Swifter.json 作者提供幫助,Swifter.json github的地址爲 https://github.com/Dogwei/Swifter JsonFileConvert類庫有問題請提交說明或者發郵件到[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章