2016-08-02 2 views
3

ASP.NET Core/Web API/Angular 2의 WintellectNOW 과정을 실행 중입니다. API 부분을 구현했지만 어떤 이유로 든 반환되는 JSON에 변수 이름이 소문자로 표시됩니다.ASP.NET 코어에서 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} 
] 

내가 기대하고 있습니다 ... 같은 형식이 반환의 C#을 모델을 기반으로

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

...

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")]와 함께 속성을 꾸미기까지 갔다. 그리고 그것은 아직도 중요하지 않았다. 오프 기회에

, 그것은 ASP.NET 핵심은 변경하지 않고 속성 이름을 반환 그래서는 낙타 표기법의 기능을 해제하려면 어떻게 ...

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; 
} 

컨트롤러의 동작 및 인스턴스 변수와 관련이 그들?

+1

이것은 RTM https://github.com/aspnet/Announcements/issues/194의 알려진 변경 사항입니다. –

답변

3

ASP.NET 코어에서 JSON 속성은 기본적으로 낙타 (this announcement)입니다.

당신은 당신의 Startup.cs 파일에

services 
    .AddMvc() 
    .AddJsonOptions(opt => opt.SerializerSettings.ContractResolver 
     = new DefaultContractResolver()); 

services.AddMvc(); 

를 교체하여 사용하지 않도록 설정할 수 있습니다. 파일 상단에 using Newtonsoft.Json.Serialization;을 추가해야합니다.

DefaultContractResolver을 입력하면 속성 이름이 JSON 출력에 그대로 표시됩니다. DataMember 속성은 필요 없습니다.

관련 문제