将大型 JSON 文件读入 C#.net 中的变量
Reading Large JSON file into variable in C#.net
我正在尝试解析 JSON 文件并插入到 SQL DB.My 解析器中,只要文件很小(小于 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);
}
}
我尝试了 JSONReader 方法,但未能将整个 JSON 转换为字符串或 variable.Please 建议。
json 文件太大,内存无法容纳任何形式。
您必须使用接受文件名或流作为输入的 JSON reader。从您的问题中不清楚您使用的 JSON Reader。来自哪个图书馆?
如果您的 JSON reader 构建了整个 JSON 树,您仍然会 运行 内存不足。当您阅读 JSON 文件时,要么挑选您要查找的数据,要么将数据结构写入另一种易于查询的磁盘格式,例如 sqlite 数据库。
使用 64 位,查看 RredCat 对类似问题的回答:
NewtonSoft Jason Performance Tips
阅读 David Cox 撰写的关于标记化的文章:
"基本方法是使用 JsonTextReader 对象,它是 Json.NET 库的一部分。JsonTextReader 一次读取一个 JSON 文件一个标记。它, 因此, 避免了将整个文件读入字符串的开销。当从文件中读取标记时, 对象被创建并推入和推出堆栈。当到达文件末尾时, 堆栈的顶部包含一个对象 — 与原始 JSON 文件"
中的对象相对应的一棵非常大的对象树的顶部
我正在尝试解析 JSON 文件并插入到 SQL DB.My 解析器中,只要文件很小(小于 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);
}
}
我尝试了 JSONReader 方法,但未能将整个 JSON 转换为字符串或 variable.Please 建议。
json 文件太大,内存无法容纳任何形式。
您必须使用接受文件名或流作为输入的 JSON reader。从您的问题中不清楚您使用的 JSON Reader。来自哪个图书馆?
如果您的 JSON reader 构建了整个 JSON 树,您仍然会 运行 内存不足。当您阅读 JSON 文件时,要么挑选您要查找的数据,要么将数据结构写入另一种易于查询的磁盘格式,例如 sqlite 数据库。
使用 64 位,查看 RredCat 对类似问题的回答:
NewtonSoft Jason Performance Tips
阅读 David Cox 撰写的关于标记化的文章:
"基本方法是使用 JsonTextReader 对象,它是 Json.NET 库的一部分。JsonTextReader 一次读取一个 JSON 文件一个标记。它, 因此, 避免了将整个文件读入字符串的开销。当从文件中读取标记时, 对象被创建并推入和推出堆栈。当到达文件末尾时, 堆栈的顶部包含一个对象 — 与原始 JSON 文件"
中的对象相对应的一棵非常大的对象树的顶部