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转换为字符串或变量.请指教.
使用64位,检查RredCat对类似问题的回答:
\n\nNewtonsoft.Json - 反序列化大对象时内存不足异常
\n\n\n\n阅读 David Cox 撰写的关于标记化的文章:
\n\n基本方法是使用 JsonTextReader 对象,它是 Json.NET 库的一部分。JsonTextReader 一次读取一个 JSON 文件一个标记。因此,它避免了将整个文件读入字符串的开销。从文件中读取令牌,创建对象并将其推入堆栈或从堆栈中推出。到达文件末尾时,堆栈顶部包含一个对象 \xe2\x80\x94,这是一棵非常大的树的顶部与原始JSON文件中的对象对应的对象“
\n\n\n