【发布时间】:2014-12-23 08:05:05
【问题描述】:
我正在尝试下载非常大的 JSON 文件。但是,我不断收到一条错误消息:
“在 mscorlib.dll 中发生了“System.OutOfMemoryException”类型的未处理异常”
{函数评估因内存不足异常而被禁用。}
有什么技巧可以下载这个大的 JSON 文件吗?我曾尝试使用字符串和 StringBuilder 但没有运气。
这是我的代码:
public static string DownloadJSON(string url)
{
try
{
String json = new WebClient().DownloadString(url); // This part fails!
return json;
}
catch (Exception)
{
throw;
}
}
我已经创建了控制台应用程序。我已经用较小的 JSON 文件尝试了这段代码,它工作正常。 我的想法是稍后拆分这个较大的 JSON 文件并将其放入数据库。但是,我需要先对其进行编码,然后才能将其放入数据库。我还没有写数据库部分或其他任何东西,因为下载这个大 JSON 会导致问题。我不需要它作为流,但这是我进行编码的示例方式。我需要对其进行编码,因为数据具有特殊字符,例如 å。
我也试过这个但同样的问题:
var http = (HttpWebRequest)WebRequest.Create(url);
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
【问题讨论】:
-
为什么需要它作为流?你为什么使用
Encoding.Unicode? (对于 ASCII 文本,它将是 UTF-8 的两倍。)文本有多大?之后你用它做什么?为什么你有一个try/catch块,你只是在重新抛出? -
我不确定它有多大...我如何测量它?我可以使用浏览器打开它,但是...
-
你能把它收集为流而不是字符串吗?尝试 OpenRead 而不是 DownloadString。
-
你能举个例子吗?
标签: c# json string out-of-memory