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

Trying to convert this .NET JsonConvert.Deserialize method that is using a custom JsonConverter to a JsonSerialize.Deserialize

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

我当前的反序列化方法使用自定义 JsonConverter(效果很好)。我不确定如何执行相同的代码,但是使用带有自定义 JsonConverter.

JsonSerlialize 实例的流式传输方法

当前代码:

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

新代码(不完整):

using (var streamReader = new StreamReader(fileName))
{
    using (var jsonReader = new JsonTextReader(streamReader))
    {
        var serializer = new JsonSerializer();
        return jsonConverter == serializer.Deserialize<IList<T>>(jsonReader);
    }
}

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

您可以尝试使用 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);
    }
}