2016-08-02 73 views
3

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

返回的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} 
] 

我期待......

[ 
{"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} 
] 

基于对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; } 
    } 
} 

我甚至去装饰[DataMember(Name = "Id")]的房产,以确保它并不重要。

在关闭的机会,这是相关的控制器中的动作和实例变量...

private static readonly List<Hat> MyHats = new List<Hat> 
{ 
    new Hat {Id = 1, Name = "Bowler", Color = "black", Count = 1 }, 
    new Hat {Id = 2, Name = "Fedora", Color = "red", Count = 1 }, 
    new Hat {Id = 3, Name = "Baseball Cap", Color = "blue", Count = 3 } 
}; 

[HttpGet] 
public IEnumerable<Hat> Get() 
{ 
    return MyHats; 
} 

如何关闭驼峰的功能,使ASP.NET核心不改变返回属性名称他们?

+1

这是RTM中已知的变化https://github.com/aspnet/Announcements/issues/194 –

回答

3

在ASP.NET Core中,默认情况下JSON属性为camel(根据this announcement)。

您可以通过替换

services.AddMvc(); 

services 
    .AddMvc() 
    .AddJsonOptions(opt => opt.SerializerSettings.ContractResolver 
     = new DefaultContractResolver()); 
在Startup.cs文件

禁用此。您必须将using Newtonsoft.Json.Serialization;添加到文件的顶部。

随着DefaultContractResolver的到位,属性名称将在JSON输出中逐字地表示。不需要DataMember属性。

相关问题