c# - 带有自定义JsonConverter的Json.NET异步支持

标签 c# .net json json.net

Json.NET version 10 added support to async序列化。
Version 11为通用JsonConverter<T>添加了支持。

问题是JsonConverter<T>和以前的JsonConverter仅支持同步方法。

即:public override void WriteJson(...)

传递给JsonWriterWriterJson支持同步和异步方法,例如:

writer.WritePropertyNameAsync()writer.WritePropertyName()

但是由于WriteJson本身是同步的,因此async选项在此处不可用。

是否可以使用异步方法自定义JsonConverter

最佳答案

这段代码在dotnet core 2.1中对我有用:

    public static async Task<string> SerializeJsonAsync(object value)
    {
        using (var ms = new MemoryStream())
        using (var sr = new StreamReader(ms))
        using (var sw = new StreamWriter(ms, new UTF8Encoding(false), 1024, true))
        using (var jtw = new JsonTextWriter(sw) { Formatting = Formatting.None })
        {
            var js = new JsonSerializer();
            js.Serialize(jtw, value);
            await jtw.FlushAsync();
            await jtw.CloseAsync();
            ms.Position = 0;
            string s = await sr.ReadToEndAsync();
            return s;
        }
    }

关于c# - 带有自定义JsonConverter的Json.NET异步支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49610328/

相关文章:

c# - 以 v4.0 为目标时对 v4.5 类的引用不明确

json - 我如何从主视图调用可映射类中的变量

c# - 当 UAC 被拒绝时,Process.Start 永远不会返回

c# - 将文本发送到当前处于焦点的任何窗口

c# - Silverlight 网格未填满整个空间

c# - 尝试从 C# 服务查询 IIS 时出现异常

c# - 人是聚合根吗?

c# - Visual Studio : Can I add links in comment blocks

php - 访问数组中的 JSON

javascript - 谷歌可视化导出DataView到Excel