2012-09-27 8 views
2

ASP.NET MVC 4 웹 서비스에 대한 HTTP 게시 JSON입니다. JSON은 Nullable <Int16> 속성 ("short?")을 포함하는 객체로 직렬화됩니다. JSON 게시가이 속성의 값을 따옴표로 묶으면 값이 성공적으로 deserialize됩니다. 따옴표로 묶이지 않으면 값은 항상 null입니다.ASP.NET MVC에 JSON 게시 Nullable Short 속성

C#을 객체 직렬화 복원되는 :

{MyLittleNumber:"5"} 

작동하지만이 경우이 :

{MyLittleNumber:5} 

그것은 읽기에 실패

Class MyClass { 
short? MyLittleNumber { get;set; } 
} 

그리고 JSON이있는 경우 값이며 기본값은 NULL입니다.

답변

5

해상도 : short (Int16)를 int (Int32)로 변경했으며 따옴표로 묶여 있는지 여부에 관계없이 값을 읽습니다.

나는이 차이를 이해하기 전에 약 3 시간 어제이 문제로 씨름, 그래서 그것을 발견 될 경우 여기에 대답을 게시하고 싶었다. ASP.NET MVC 클래스가 JSON을 클래스로 deserialize하는 방식의 단점 때문에 발생한다고 생각합니다.

nullable decimals/double에 관련된 질문이 여기에 있습니다. 누구든지 Passing nullable decimal from json to ASP.NET MVC Controller Action?

+1

다운을 표시 - 수치. 이것은 분명히 ASP.NET MVC의 버그입니다. – Milimetric

+1

upvotes 주셔서 감사합니다! 나는 놀랐고 임의의 downvotes를보기 위해 실망했다. 한 사람이라도 도움이된다면 질문과 답변을 게시 할 가치가 있습니다. – brentlightsey

+0

팁을 주셔서 감사합니다. 기본 모델 바인더에는 분명히 한두 가지 문제가있는 것으로 보이며이 게시물은 저를 올바른 방향으로 보냈습니다. 문제가있는 사람이라면 JSON 데이터에 십진수로 NULL로 잘못 직렬화되지 않은 따옴표가있는 숫자가 있습니까? 속성 값이 0 일 때 ... 내 자신의 모델 바인더와 ServiceStack JSON 파서를 사용하여 완벽하게 작동합니다. –