Я десериализую огромную JSON (1,4 ГБ) через поток, потому что я не хочу заранее загружать весь контент в память только для синтаксического анализа. Это работает нормально, но требуется ~ 80 секунд, поэтому я хочу показать прогресс.Прогресс при десериализации JSON
public JObject DeserializeViaStream(string filename)
{
object obj;
var serializer = new JsonSerializer();
using (var sr = new StreamReader(new FileStream(filename, FileMode.Open)))
{
using (var jsonTextReader = new JsonTextReader(sr))
{
obj = serializer.Deserialize(jsonTextReader);
}
}
return (JObject) obj;
}
Я еще не пробовал, но только одна мысль: я мог бы реализовать свой собственный поток читателя, который следить за байтами время чтения и сравнения, что длина файла.
Есть ли встроенный вариант или более простой способ сделать это?
Вы в конечном итоге придумали решение? – user2441511
@ user2441511: см. Мой ответ ниже. Работает ProgressStream. –