我正在尝试反序列化一个大型的json文件。因此,我希望将文件内容流式传输到Deserialize
方法,以减少分配/ GC的数量等。
我当前的反序列化方法使用自定义JsonConverter
(效果很好)。我不确定如何使用相同的代码,但使用自定义JsonSerlialize
的{{1}}实例的流方法。
当前代码:
JsonConverter
新代码(不完整):
JsonConvert.DeserializeObject<IList<T>>(content, new[] { jsonConverter });
我的新代码中没有任何CustomConverter实例。请问我该怎么做?
答案 0 :(得分:2)
您可以尝试使用JsonSerializer的static Create
function with settings来传递转换器。
using (var streamReader = new StreamReader(fileName))
{
using (var jsonReader = new JsonTextReader(streamReader))
{
var serializer = JsonSerializer.Create(new JsonSerializerSettings() { Converters = new List<JsonConverter> { jsonConverter }});
return jsonConverter == serializer.Deserialize<IList<T>>(jsonReader);
}
}