我对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很大,我正在寻找最好的解决方案。
答案 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();
}
}