JSON.Net освобождение jObect ресурсов

237
17 июня 2017, 11:08

Есть небольшой код (парсер), берет JSON из вывода web-сервера. Использую так:

string HTMLOutput = "Тут полученный JSON код";
dynamic JSONOutput = JsonConvert.DeserializeObject(HTMLOutput);

JSON достаточно объемный, после десериализации съедает несколько гигов RAM. Как можно освободить ресурсы? Пробовал JSONOutput.Finzlize(); но компилятор ругается. Спасибо за помощь

Answer 1

Чтобы минимизировать использование памяти и количество выделенных объектов, Json.NET поддерживает сериализацию и десериализацию непосредственно в потоке.

HttpClient client = new HttpClient();
using (Stream s = client.GetStreamAsync("http://site.com/large.json").Result)
using (StreamReader sr = new StreamReader(s))
using (JsonReader reader = new JsonTextReader(sr))
{
     JsonSerializer serializer = new JsonSerializer();
     // Чтение JSON из потока. Размер JSON не имеет значения, 
     // потому что только небольшая часть считывается из HTTP-запроса.
     Person p = serializer.Deserialize<Person>(reader);
}
READ ALSO
C# публикация фотографии в альбом vk

C# публикация фотографии в альбом vk

https://vkcom/dev/upload_files В документации не понятно сказано, про 2 этап

365
Ввод текста в таблицу - первый русский символ всегда не тот, что должен быть

Ввод текста в таблицу - первый русский символ всегда не тот, что должен быть

Есть приложение с табличным компонентом C1 FlexGrid, при выделении ячейки в таком виде

300
Как получить класс через TCP

Как получить класс через TCP

Я на сервере в ответ передаю класс вот так:

273
Создание XML с помощью c#

Создание XML с помощью c#

ЗдравствуйтеМне нужно создать xml-файл по средствам языка c#

356