Blazor NSwag Newtonsoft.Json 转换为 System.Text.Json

3
我正在使用以下代码为我的Blazor WebAssembly项目生成C#客户端API。
using (HttpResponseMessage response = client.GetAsync("https://localhost:5001/swagger/v1/swagger.json").Result)
{
    using (HttpContent contentapi = response.Content)
    {
        var json = contentapi.ReadAsStringAsync().Result;
        var document = await OpenApiDocument.FromJsonAsync(json);

        var settings = new CSharpClientGeneratorSettings
        {
            ClassName = "Client",
            CSharpGeneratorSettings =
            {
                Namespace = "MyProjectClient",
            }
        };

        var generator = new CSharpClientGenerator(document, settings);
        var code = generator.GenerateFile();
    }
}

现在我想从Newtonsoft.Json迁移到System.Text.Json,因为在一些较大的API请求中,我经常遇到非常慢的反序列化(长达几秒钟)。
我在网上找到了一些迁移指南,但我想继续使用我的NSwag工具链来生成我的API客户端,因为除此之外它工作得非常好。有人知道如何告诉NSwag工具链使用System.Text.Json而不是Newtonsoft.Json吗?
1个回答

7
您可以通过设置以下内容来选择要使用的Json库以生成客户端:
JsonLibrary = CSharpJsonLibrary.SystemTextJson

CSharpGeneratorSettings初始化中。
不幸的是,生成的文件仍然包含一些对Newtonsoft.Json的提及。 也许更新的版本会正常工作。

4
cmd 版本中,我使用了 /JsonLibrary:SystemTextJson - joshcomley
这个可以运行,但值得注意的是 System.Text.Json 仍处于实验阶段并且存在缺陷。 - Taco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接