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]