c# - 从 Web 服务反序列化大型 JSON 对象(内存不足)

标签 c# json

我有一个程序可以从网络服务中反序列化大型对象。在网络服务调用和 200 之后,代码如下所示。

JsonConvert.DeserializeObject<List<T>>(resp.Content.ReadAsStringAsync().Result).ToList()

有时,在运行此进程时,我会收到一个聚合异常,显示内部异常为内存不足。我无法确定是读取 JSON 数据字符串(可能非常大)还是导致此问题的反序列化过程。我想做的是分解字符串并从响应中单独拉回每个 JSON 对象,然后反序列化它。我只是很难找到一种方法,一次只能从响应中提取一个 JSON 对象。非常感谢任何建议!

最佳答案

HttpClient client = new HttpClient();

using (Stream s = client.GetStreamAsync("http://www.test.com/large.json").Result)
using (StreamReader sr = new StreamReader(s))
using (JsonReader reader = new JsonTextReader(sr))
{
    JsonSerializer serializer = new JsonSerializer();

    // read the json from a stream
    // json size doesn't matter because only a small piece is read at a time from the HTTP request
    Person p = serializer.Deserialize<Person>(reader);
}

关于c# - 从 Web 服务反序列化大型 JSON 对象(内存不足),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151125/

相关文章:

c# - 在 WinForms 中使用时间的最佳方法?

c# - 通过 AutoFixture 的索引器设置自定义值

c# - 大写锁定检测 - Windows 10 与 Windows 10 Mobile - C#

python - 序列化包含 Django 查询集的对象

json - 如何使用 $ref 文件中的additionalProperties?

java - 如何通过 gson 解析具有多个对象的 json 数组?

C# MongoDB : Querying a $match on an array after an $unwind

c# - 如何在.net core中使用 "System.Net.ServicePointManager"?

android - 为我自己的用户名指定的 Twitter JSON 搜索

c# - 如何处理 JSON 和变体对象?