我有一個嚴重的問題與「JsonConvert.SerializeObject」我需要序列化超過500,000字典記錄,以使序列化拋出以下錯誤; System.OutOfMemoryException的。我試圖在foreach中分別序列化每個鍵,值對,但它被鎖定。顯然這是一個優化問題,但我不知道從哪裏開始,線程要部分序列化? 這些函數適用於很少的值。 我的代碼:SerializeObject拋出System.OutOfMemoryException
string json = JsonConvert.SerializeObject(DatatableToDictionary(dt), Newtonsoft.Json.Formatting.Indented);
public List<Dictionary<string, object>> DatatableToDictionary(DataTable dt, List<DataColumn> columns)
{
return dt.Rows.Cast<DataRow>().Select(
r => columns.ToDictionary(c => c.ColumnName, c => r[c.ColumnName])).ToList();
}
也許你需要恢復到'JsonWriter'。 –
罪魁禍首也可以是循環引用 – mmcrae
最有可能的json字符串創建的總大小太大。你能展示你的字典和周圍類型的結構嗎?我能夠使用流,StreamWriter和JsonTextWriter輕鬆快速地將包含值的百萬字典鍵寫入json文件。 –