이제 JSON 속성이 ASP .Net Core 1.0.0-rc2-final에서 1.0.0으로 스왑시 소문자
방금 프로젝트를 ASP .Net Core 1.0.0-rc2-final에서 1.0.0으로 바꿨습니다. 우리 웹 사이트와 클라이언트는 JSON 속성의 대문자로 인해 작동을 멈췄습니다. 예를 들어,이 JavaScript 줄은 이제 실패합니다.
for (var i = 0; i < collection.Items.length; i++){
컨트롤러는 이제 "Items"대신 "items"배열을 호출하기 때문입니다. 업데이트 된 패키지를 설치하고 project.json 파일을 편집하는 것 외에는 변경하지 않았습니다. 여전히 속성을 대문자로 사용하는 C # 모델 파일을 변경하지 않았습니다.
ASP.Net Core 컨트롤러가 소문자 속성으로 JSON을 반환하기 시작한 이유는 무엇입니까? 모델에서 속성 이름의 대소 문자를 존중하는 방법으로 돌아가려면 어떻게해야합니까?
MVC는 이제 기본적으로 낙타 케이스 이름으로 JSON을 직렬화합니다.
이 코드를 사용하여 기본적으로 카멜 케이스 이름을 피하십시오.
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
출처 : https://github.com/aspnet/Announcements/issues/194
다음과 같이 동작을 변경할 수 있습니다.
services
.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
https://github.com/aspnet/Announcements/issues/194 에서 발표 내용을 참조하십시오.
Google에서 이것을 발견하고 Core 3에 대한 솔루션을 찾고있는 경우
Core 3은 기본적으로 대소 문자를 유지하지 않는 System.Text.Json을 사용합니다. 이 Github 문제 에서 언급했듯이 PropertyNamingPolicy를 null로 설정하면 문제가 해결됩니다.
public void ConfigureServices(IServiceCollection services)
{
...
services.AddControllers()
.AddJsonOptions(opts => opts.JsonSerializerOptions.PropertyNamingPolicy = null);
ASP.NET Core가 아닌 ASP.net WEB API를 사용하는 일부 사용자를위한 것입니다.
WebApiConfig에이 줄을 추가합니다.
//Comment this jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
웹 API에 대한 Google 검색에서도 처음으로 나오기 때문에 여기에 답변으로 추가하십시오.
'programing' 카테고리의 다른 글
Angular2의 열거 형을 기반으로 선택 (0) | 2020.11.20 |
---|---|
효소-접근 및 설정 방법 (0) | 2020.11.20 |
Unix 파일 이름에서 제한해야하는 문자는 무엇입니까? (0) | 2020.11.20 |
두 개 이상의 연속 문자를 찾기위한 RegEx (0) | 2020.11.20 |
64 비트 컴퓨터에서 sizeof (int)는 얼마입니까? (0) | 2020.11.20 |