使用System.Text.Json

问题描述

在dotnet3.1中,使用System.Text.Json

如何将C#对象异步序列化为utf8jsonwriter? 我找到了Serialize()方法,但没有找到Async版本,并且正在写流,因此出现错误: 如果我使用sync Serialize(),则“复制到流时出错...不允许同步操作...。”

我的代码很简单:

Stream responseStream;
var jsonWriter = new Utf8JsonWriter(responseStream);
await JsonSerializer.SerializeAsync(jsonWriter,obj);

其中obj是类实例DTO。

我看到接收到一个Stream的重载,但是我需要使用Utf8JsonWriter jsonWriter来编写,它包装了目标流。

解决方法

正如他们所提到的,它们已经是两个记录的异步序列化流方法。尽管如果您的JSON序列化程序正在同步写入响应主体,那么您必须启用SynchronousIO。

红est(Program.cs类):

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureKestrel((context,options) =>
                {
                    options.AllowSynchronousIO = true;
                })

IIS(Startup.cs类):

services.Configure<IISServerOptions>(options =>
{
  options.AllowSynchronousIO = true;
});

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...