У меня есть серьезная проблема с «JsonConvert.SerializeObject». Мне нужно сериализовать более 500 000 записей словаря, чтобы сделать сериализацию, выдает следующую ошибку; System.OutOfMemoryException. Я попытался сериализовать каждую пару, пару значений отдельно в foreach, но она заблокирована. По-видимому, это проблема оптимизации, но я не знаю с чего начать, потоки сериализуются по частям? Эти функции отлично работают с несколькими значениями. Мой код:SerializeObject throws 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'. –
Culprit также может быть круговыми ссылками – mmcrae
Скорее всего, общий размер создаваемой строки json слишком велик. Можете ли вы показать структуру своего словаря и окружающих его типов? Я смог легко и быстро выписать миллион ключей словаря со значениями в json-файл, используя поток, StreamWriter и JsonTextWriter. –