我在使用“JsonConvert.SerializeObject”时遇到了严重的问题。我需要将500,000多个字典记录进行序列化,但是序列化会抛出以下错误:System.OutOfMemoryException。我尝试在foreach中分别对每个键值对进行序列化,但是代码被锁住了。显然这是一个优化问题,但是我不知道从哪里开始,是否可以采用线程分批次进行序列化?
这些函数在处理少量数据时运行良好。
我的代码:
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
。 - Lasse V. Karlsen