将大型JSON文件读入C#.net中的变量

use*_*415 6 json json.net jsonreader

我试图解析JSON文件并插入到SQL DB中.只要文件很小(小于5 MB),我的解析器工作得非常好.

我在尝试读取大(> 5MB)文件时遇到"Out of memory exception".

if (System.IO.Directory.Exists(jsonFilePath))
                {
                    string[] files = System.IO.Directory.GetFiles(jsonFilePath);
                    foreach (string s in files)
                    {
                        var jsonString = File.ReadAllText(s);
                        fileName = System.IO.Path.GetFileName(s);
                        ParseJSON(jsonString, fileName);

                    }
                }
Run Code Online (Sandbox Code Playgroud)

我尝试了JSONReader方法,但没有运气将整个JSON转换为字符串或变量.请指教.

A.J*_*uer 3

使用64位,检查RredCat对类似问题的回答:

\n\n

Newtonsoft.Json - 反序列化大对象时内存不足异常

\n\n

NewtonSoft Jason 性能技巧

\n\n

阅读 David Cox 撰写的关于标记化的文章:

\n\n

基本方法是使用 JsonTextReader 对象,它是 Json.NET 库的一部分。JsonTextReader 一次读取一个 JSON 文件一个标记。因此,它避免了将整个文件读入字符串的开销。从文件中读取令牌,创建对象并将其推入堆栈或从堆栈中推出。到达文件末尾时,堆栈顶部包含一个对象 \xe2\x80\x94,这是一棵非常大的树的顶部与原始JSON文件中的对象对应的对象

\n\n

使用 Json.NET 解析大记录

\n