尝试将使用自定义JsonConverter的.NET JsonConvert.Deserialize方法转换为JsonSerialize.Deserialize

时间:2017-08-25 00:35:35

标签: c# .net json json-deserialization

我正在尝试反序列化一个大型的json文件。因此,我希望将文件内容流式传输到Deserialize方法,以减少分配/ GC的数量等。

我当前的反序列化方法使用自定义JsonConverter(效果很好)。我不确定如何使用相同的代码,但使用自定义JsonSerlialize的{​​{1}}实例的流方法。

当前代码:

JsonConverter

新代码(不完整):

JsonConvert.DeserializeObject<IList<T>>(content, new[] { jsonConverter });

我的新代码中没有任何CustomConverter实例。请问我该怎么做?

1 个答案:

答案 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);
    }
}