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);
しかし、どちらのフレームワークも、JSON サブ配列全体contents
を一度にデシリアライズしてメモリに読み込みます。
一度に 1 つの JsonFileInfo オブジェクトのストリームからこの JSON の結果を読み取るにはどうすればよいですか?