我想有效地反序列化包含 JSON 对象嵌套数组的 JSON 对象。
例如,一个 JSON 目录列表可以包含一个根 JSON 文件系统对象和一个文件系统对象的递归数组。
{
"bytes": 0,
"path": "/Public",
"is_dir": true,
"contents": [
{
"bytes": 0,
"modified": "Mon, 18 Jul 2011 20:13:43 +0000",
"path": "/Public/1.txt",
"is_dir": false
},
{
"bytes": 0,
"modified": "Mon, 18 Jul 2011 20:13:43 +0000",
"path": "/Public/2.txt",
"is_dir": false
}
]
}
相应的 C# 类看起来像这样
class JsonFileInfo
{
public string Path;
public long Bytes;
public string Modified;
public bool IsDir;
public List<JsonFileInfo> Contents;
}
我试过 .NET DataContractJsonSerializer 例如
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(RainstormFileInfo));
JsonFileInfo jfi = (JsonFileInfo)serializer.ReadObject(responseStream);
我也尝试过 JSON.NET JsonSerializer + JsonTextReader 例如
JsonReader reader = new JsonTextReader(new StreamReader(responseStream))
JsonSerializer serializer = new JsonSerializer();
JsonFileInfo jfi = serializer.Deserialize<JsonFileInfo>(reader);
contents
但是这两个框架都一举将整个 JSON 子数组读入内存。
如何一次从流中读取一个 JsonFileInfo 对象的 JSON 结果?