【发布时间】:2021-05-19 17:33:42
【问题描述】:
我从 WebService 接收到一个大的 JSON 字符串,我正在寻找使用 C# 反序列化它的最佳内存优化方法。
JSON 结构:
{
"d": {
"results": [
{
"metadata": {
"id": "",
"uri": "",
"type": ""
},
"ID": "",
"Value1": "",
"Value2": "",
"Value3": ""
},
{
"metadata": {
"id": "",
"uri": "",
"type": ""
},
"ID": "",
"Value1": "",
"Value2": "",
"Value3": ""
},
]
}
}
我想获取“结果”数组中的所有对象,但只获取一个又一个对象,而不像现在的完整列表。 我已经在使用 StreamReader 来避免将完整的 json 字符串加载到内存中。 是否有任何选项可以只读取一个对象,进行一些处理然后读取下一个以避免“OutOfMemoryExceptions”?
WebResponse response = r.GetResponse();
using (Stream dataStream = response.GetResponseStream())
{
var serializer = new JsonSerializer();
using (var sr = new StreamReader(dataStream))
using (var jsonTextReader = new JsonTextReader(sr))
{
return ((RootObject)serializer.Deserialize<RootObject>(jsonTextReader)).RootObject2.Results;
}
【问题讨论】:
标签: c# json web-services json.net