我有两个控制器控制器:ControllerA和ControllerB。每个控制器的基类是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个控制器配置或注释此功能?
我在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) 我已将 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 工作正常(请参见下面的屏幕截图),但我无法让驼峰式工作。
有什么建议么?问候