2015-05-02 29 views
-1

我有一個大的JSON文件(大約1.5千兆字節),我想將它轉換爲DataTable。但我想要做的是,首先我應該閱讀它然後DeserializeObject到DataTable。這裏是我的代碼:如何將大型JSON文件轉換爲C#中的DataTable?

StreamReader read = new StreamReader(@"C:\Users\Reza\Downloads\yelp_dataset_challenge_academic_dataset\yelp_dataset_challenge_academic_dataset\yelp_dataset_challenge_academic_dataset\yelp_academic_dataset_review.json"); 
     string json = read.ReadToEnd();   
     DataTable tester = JsonConvert.DeserializeObject<DataTable>(json); 
     dataGridView1.DataSource = tester; 

但這個代碼就給了我的錯誤,並顯示爲System.OutOfMemoryException 我應該怎麼辦?

+1

可能重複http://stackoverflow.com/questions/9026508/incremental-json - 解析在C - 銳) –

+1

請參閱:http://stackoverflow.com/questions/27315521/system-outofmemoryexception-with-json-net-with-listobject和在這裏:http://stackoverflow.com/questions/20374083/deserialize-json-array-stream-one-item-at-time – dbc

回答

0

從我看到的JsonConvert方法看來,它沒有包含一個接受流作爲輸入的東西 - 似乎只有字符串。所以 - 壞消息 - 這不會很簡單。

您可能需要以某種方式將字符串分成更小的塊,然後將其轉換。

我發現,這裏描述類似的過程中的文章:

http://www.drdobbs.com/windows/parsing-big-records-with-jsonnet/240165316?pgno=1

[增量JSON解析在C#(的
+0

感謝您的回答,但使用Stream或字符串並不重要,我也使用字符串x = File.ReadAllText()但由於它的大小,它給了我錯誤。 –

+0

是的,我的要求是相同的一次讀取所有數據集和表和創建SQL表..但它是拋出內存異常..請指教.. – user1046415