Общий подход к работе с большими файлами JSON:
Я бы начал с того, что избегал любых попыток декодирования в строку.Вместо этого возьмите поток контента вашего ответа, следуя тому, что описано в моем ответе здесь , чтобы избежать загрузки всего потока в память, прежде чем вы получите его.
Теперь вы можете:
var stream = await response.Content.ReadAsStreamAsync();
для захвата Stream
вместо string
.
Теперь вы можете подавать поток непосредственно в десериализатор, согласно информации здесь :
using (StreamReader sr = new StreamReader(stream))
using (JsonReader reader = new JsonTextReader(sr))
{
JsonSerializer serializer = new JsonSerializer();
var o = serializer.Deserialize<SomeClassMatchingTheJsonSchema>(reader);
}
Если вы все еще задыхаетесь от памяти, вам может потребоваться работа на более низком уровне, используя JsonTextReader