C# 如何读取大型响应的json负载?

C# 如何读取大型响应的json负载?,c#,json,mailchimp,dotnet-httpclient,C#,Json,Mailchimp,Dotnet Httpclient,我正在开发一些代码,用于读取Mailchimp的导出API返回的大型json负载 var response = caller.PostAsync(endpoint, data).Result; var exportedData = response.Content.ReadAsStringAsync().Result; 我目前正在使用Visual Studio 2017调试器尝试并查看响应,但我不断收到一个错误,上面显示: 由于内存不足,无法获取局部变量或参数

我正在开发一些代码,用于读取Mailchimp的导出API返回的大型json负载

        var response = caller.PostAsync(endpoint, data).Result;

        var exportedData = response.Content.ReadAsStringAsync().Result;
我目前正在使用Visual Studio 2017调试器尝试并查看响应,但我不断收到一个错误,上面显示:

由于内存不足,无法获取局部变量或参数的值

我最终希望从json数据的每一行中提取信息,并对其进行操作。我需要做什么才能在不耗尽内存的情况下查看这些数据?

试试看

var exportedData = await response.Content.ReadAsAsync<model>();
var exportedData=wait response.Content.ReadAsAsync();
还要确保您的方法是异步的

public async Task<returntype> MethodName()
public异步任务MethodName()
在ReadAsAsync中,让“model”作为要将数据映射到的对象模型的名称,并让“returntype”作为方法名称中Task旁边的数据类型


你能更新你的问题并展示整个方法吗。我想更详细地了解一下它,这是一种在大型JSON文件上操作的通用方法:

首先,我要避免任何解码字符串的尝试。相反,抓取响应的内容流,遵循所描述的内容,以避免在动手之前将整个流下载到内存中

现在您可以:

var stream = await response.Content.ReadAsStreamAsync();
获取
而不是
字符串

现在,您可以根据以下信息将流直接送入反序列化程序:

使用(StreamReader sr=新的StreamReader(stream))
使用(JsonReader=newjsontextreader(sr))
{
JsonSerializer serializer=新的JsonSerializer();
var o=序列化程序。反序列化(读取器);
}

如果你还在内存中窒息,你可能需要考虑使用

在较低的级别上操作,“大”是多大?把它转储到一个文件中。
using (StreamReader sr = new StreamReader(stream))
using (JsonReader reader = new JsonTextReader(sr))
{
    JsonSerializer serializer = new JsonSerializer();
    var o = serializer.Deserialize<SomeClassMatchingTheJsonSchema>(reader);
}