我正在尝试下载非常大的JSON文件。但是,我不断收到错误消息:
“mscorlib.dll中出现未处理的'System.OutOfMemoryException'类型异常”
{由于内存不足异常,功能评估被禁用。}
有关如何下载此大型JSON文件的任何提示?我曾尝试使用string和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();
答案 0 :(得分:1)
我认为你的反应非常大。处理流更好。现在指出导致记忆超自然现象。
在你的情况下,上面的规则会中断,所以它不会起作用,但如果你的文件大小小于那个,那么尝试用64位构建你的代码,它会给你的结果。
答案 1 :(得分:0)
将其下载到文件中:
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile(
url,
path);
}
当然,如果JSON库太大而无法在内存中打开,它可能无法处理,但如果您没有选择并且文件必须如此大,您可以尝试以某种方式处理它。