反序列化JSON时的进度

时间:2016-07-18 20:11:11

标签: json.net progress

我通过流反序列化一个巨大的JSON(1.4 GB),因为我不想提前将整个内容加载到内存中进行解析。这工作正常,但需要约80秒,所以我想显示进度。

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;
}

我还没有尝试但只有一个想法:我可以实现自己的流式读取器,它跟踪正在读取的字节并将其与文件长度进行比较。

是否有内置选项或更简单的方法来执行此操作?

1 个答案:

答案 0 :(得分:2)

我最终使用了我的想法。幸运的是,已经有ProgressStream available by Mel Green