相关疑难解决方法(0)

更改单个ASP.NET Core控制器的JSON序列化设置

我有两个控制器控制器:ControllerAControllerB。每个控制器的基类是Controller

ControllerA需要的默认格式(驼峰)返回JSON。将ControllerB需要在不同的JSON格式返回数据:snake_case。

如何在ASP.NET Core 2.1中实现此功能?

我已经尝试过startup

services
    .AddMvc()
    .AddJsonOptions(options =>
    {
        options.SerializerSettings.Converters.Add(new StringEnumConverter());
        options.SerializerSettings.ContractResolver = new DefaultContractResolver()
        {
            NamingStrategy = new SnakeCaseNamingStrategy()
        };
    })
    .AddControllersAsServices();
Run Code Online (Sandbox Code Playgroud)

但这将改变所有控制器的序列化,而不仅仅是ControllerB。如何为1个控制器配置或注释此功能?

c# json.net asp.net-core-mvc .net-core asp.net-core

12
推荐指数
2
解决办法
2892
查看次数

如何在JSON响应ASP.NET Core中关闭或处理camelCasing?

我在ASP.NET Core/Web API/Angular 2上运行WintellectNOW课程.我已经实现了API部分,但无论出于何种原因,返回的JSON的变量名称都是小写的.

返回的JSON格式为...

[
 {"id":1,"name":"Bowler","color":"black","count":1},
 {"id":2,"name":"Fedora","color":"red","count":1},
 {"id":3,"name":"Baseball Cap","color":"blue","count":3}
]
Run Code Online (Sandbox Code Playgroud)

我期待着...

[
 {"Id":1,"Name":"Bowler","Color":"black","Count":1},
 {"Id":2,"Name":"Fedora","Color":"red","Count":1},
 {"Id":3,"Name":"Baseball Cap","Color":"blue","Count":3}
]
Run Code Online (Sandbox Code Playgroud)

基于...的C#模型

namespace HatCollection.Models
{
    public class Hat
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Color { get; set; }
        public int Count { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我甚至为装饰物业而[DataMember(Name = "Id")]努力确保它仍然无关紧要.

关闭机会,它与控制器中的Action和实例变量相关...

private static readonly List<Hat> MyHats = new List<Hat>
{
    new Hat {Id = 1, Name = "Bowler", Color …
Run Code Online (Sandbox Code Playgroud)

.net c# json angularjs asp.net-core

11
推荐指数
5
解决办法
2469
查看次数

CamelCase 无法在 net core 6 Web api 中工作

我已将 Web api 应用程序从 net core 5 迁移到 6,并通过 System.Text.Json 更改了 NewtonSoft 序列化程序。在我的 Startup.cs 中,我使用以下代码配置了 Json 序列化:

services.AddControllers(config =>
{
    config.RespectBrowserAcceptHeader = true;
    config.ReturnHttpNotAcceptable = true;
})
.AddJsonOptions(options =>
{
    options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    options.JsonSerializerOptions.WriteIndented = true;
})
.AddXmlDataContractSerializerFormatters();
Run Code Online (Sandbox Code Playgroud)

该代码仅部分有效。WriteIndented 工作正常(请参见下面的屏幕截图),但我无法让驼峰式工作。

在此输入图像描述

有什么建议么?问候

c# asp.net-core-webapi system.text.json asp.net-core-6.0

7
推荐指数
1
解决办法
9893
查看次数