【问题标题】:call the method AddNewtonsoftJson() in particular class/controller level在特定的类/控制器级别调用方法 AddNewtonsoftJson()
【发布时间】:2021-10-14 00:26:25
【问题描述】:

我正在使用下面的代码并且工作正常(读取 Json 数据)。

Microsoft.AspNetCore.Mvc.NewtonsoftJson.

services.AddControllers().AddNewtonsoftJson();

担心我正在更改一个 API 的代码。由于这些更改,应该不会对其他 API 产生任何影响。

那么有什么方法可以在特定的类/控制器级别调用方法 .AddNewtonsoftJson()?

我不想在 setatup.cs 中调用 .AddNewtonsoftJson()。

提前致谢。

【问题讨论】:

    标签: .net asp.net-mvc asp.net-core asp.net-web-api


    【解决方案1】:

    JSON 序列化程序的配置对于整个 ASP.NET Core 应用程序是全局的。仅在每个控制器或每个操作级别上都无法更改此设置。

    但是,您可以做的是在特殊情况下从请求正文中手动解析 JSON。

    我通常建议重新考虑您是否真的需要这种区别:如果您的应用程序中确实需要 Newtonsoft.Json 功能,那么完全切换到它可能是有意义的。标准 System.Text.Json 序列化程序没有 Newtonsoft.Json 无法实现的任何特定功能。所以也许只是默认切换到它并正确配置它对您的应用程序来说就足够了。

    【讨论】:

    • 感谢您的宝贵回答
    【解决方案2】:

    只添加 services.AddControllers().AddNewtonsoftJson(); 并没有多大用处 如果您需要为其添加一些选项,这是有道理的。例如我正在使用 API

    services.AddControllers()
            .AddNewtonsoftJson(options =>
            options.SerializerSettings.ContractResolver =
            new CamelCasePropertyNamesContractResolver());
    

    【讨论】:

    • 感谢您的宝贵回答
    • 这并不完全正确。例如Json.NET 属性不适用于System.Text.Json。
    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2012-05-12
    • 2013-08-09
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多