Чтение больших JSON-файлов
Все мы привыкли читать JSON как-то так (с использованием Json.NET):
Product deserializedProduct = JsonConvert.DeserializeObject(json);
И это отлично работает, пока размер сообщения, которое мы читаем сравнительно небольшой. Вчера мне понадобилось прочить JSON размером 1.7 Гб. Все попытки десериализации сохраненного в файле массива ожидаемо закончились OutOfMemoryException.
Без лишних разговоров, публикую рецепт:
В каждой итерации цикла в переменной obj мы будем получать следующий элемент массива.
Память такой подход не использует вообще :)
Product deserializedProduct = JsonConvert.DeserializeObject
И это отлично работает, пока размер сообщения, которое мы читаем сравнительно небольшой. Вчера мне понадобилось прочить JSON размером 1.7 Гб. Все попытки десериализации сохраненного в файле массива ожидаемо закончились OutOfMemoryException.
Без лишних разговоров, публикую рецепт:
В каждой итерации цикла в переменной obj мы будем получать следующий элемент массива.
Память такой подход не использует вообще :)
Коментарі
но это ж только "большой массив простых объектов", и при условии, что сами по-себе CS-объекты влезут в память (ок, 1.7G памяти всегда есть).
но сама идея "поточной обработки наборов данных мне кажется очень правильной!