StreamReader
そのストリーム内のすべてのオブジェクトの中間オブジェクトをインスタンス化せずに、JSONから逆シリアル化する必要があります。
- JSON.NETは次のように呼び出されます
JsonConvert.DeserializeObject<T>(string json, JsonConverter[] converters)
- を受け入れない
StreamReader
、および Newtonsoft.Json.*
メモリプロファイラーが示すように、JSON構造体のクラスのセット全体をメモリ内に作成します。JsonConverter
_私は実際にこれが当てはまるかどうかはわかりません。
- を受け入れない
- JavaScriptSerializer
Stream
もsをまったく サポートしていないようです。- そして、非難された
new JsonSerializer().Deserialize(new JsonTextReader(streamReader))
- そして、非難された
ゼロアプローチで必要なのは、SAXまたはStAXスタイルのJSONパーサーです。
私が理想的に欲しいのは、次のようなAPIです。
object JsonCooler.DeserializeObject<T>(
StreamReader jsonStream, Converter[] converters)
これは、クラスの新しいインスタンスに直接逆シリアル化され、T
その中間のDOMのようなオブジェクトのすべてをメモリに保持しません。
そのようなデシリアライザーは存在しますか?または、コンセプトレベルで何が欠けていますか?