我正在尝试解析 JSON 文件并插入到 SQL DB 中。只要文件很小(小于 5 MB),我的解析器就可以正常工作。
尝试读取大(> 5MB)文件时出现“内存不足异常”。
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);
}
}
我尝试了 JSONReader 方法,但没有成功将整个 JSON 转换为字符串或变量。请指教。
最佳答案
使用 64 位,检查 RredCat 对类似问题的回答:
Newtonsoft.Json - Out of memory exception while deserializing big object
NewtonSoft Jason Performance Tips
阅读 David Cox 关于标记化的文章:
“基本方法是使用 JsonTextReader 对象,它是 Json.NET 库的一部分。JsonTextReader 一次读取一个 JSON 文件。因此,它避免了将整个文件读入字符串的开销。如从文件中读取 token ,创建对象并将其压入和压出堆栈。当到达文件末尾时,堆栈的顶部包含一个对象 - 与这些对象对应的非常大的对象树的顶部在原始 JSON 文件中”
Parsing Big Records with Json.NET
关于json - 将大型 JSON 文件读入 C#.net 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38577622/