Json解析给OutOfMemory

时间:2017-04-03 20:32:47

标签: c# json json.net

我对Json.net比较陌生。我必须解析一个JSON,我将其作为URL。

我的代码看起来:

var url = "some json url";
using (WebClient wc = new WebClient())
{
    wc.UseDefaultCredentials = true;
    JArray arr = JArray.Parse(wc.DownloadString(url));
    var holdingRecords = arr.ToObject<List<HoldingData>>();
} 

这适用于ConsoleApp。一旦我把它放在我的ASP.net中,wc.DownloadString(url)就会返回OutOfMemory错误。

HoldingData是一个包含许多属性的类。 JSON是结构数组,其中每个结构都是类的属性。

关于如何解决此问题的任何线索。我的JSON很大,我正在寻找最好的解决方案。

1 个答案:

答案 0 :(得分:1)

我使用了类似下面的内容,它可以满足我的需求。但我想知道是否有更好的方法

using (WebClient client = new WebClient())
            {
                client.UseDefaultCredentials = true;
                using (Stream stream = client.OpenRead(url))
                using (StreamReader streamReader = new StreamReader(stream))
                using (JsonTextReader reader = new JsonTextReader(streamReader))
                {
                    reader.SupportMultipleContent = true;
                    List<HoldingData> hd = new List<HoldingData>();
                    var serializer = new JsonSerializer();
                    while (reader.Read())
                    {
                        if (reader.TokenType == JsonToken.StartObject)
                        {
                            HoldingData c = serializer.Deserialize<HoldingData>(reader);
                            hd.Add(c);
                        }
                    }

                    Console.ReadLine();
                }
            }