将JSON发布到ASP.NET MVC Nullable Short Property

bre*_*sey 2 c# asp.net-mvc json nullable short

我是HTTP将JSON发布到ASP.NET MVC 4 Web服务.JSON被反序列化为包含Nullable <Int16>属性(又名"short?")的对象.当JSON发布时将此属性的值包装在引号中时,该值将成功反序列化.如果它没有用引号括起来,则该值始终为null.

正在反序列化的C#对象:

Class MyClass {
short? MyLittleNumber { get;set; }
}
Run Code Online (Sandbox Code Playgroud)

如果JSON是这样的:

{MyLittleNumber:"5"}
Run Code Online (Sandbox Code Playgroud)

它有效,但如果是这样的话:

{MyLittleNumber:5}
Run Code Online (Sandbox Code Playgroud)

它无法读取值并默认为NULL.

bre*_*sey 5

解决方案:我将short(Int16)更改为int(Int32),现在它将读取该值,无论它是否用引号括起来.

在理解这种区别之前,我昨天花了大约3个小时来解决这个问题,所以我想在这里找到答案.我相信它是由ASP.NET MVC类将JSON反序列化为类的方式的一些缺点引起的.

关于可以为空的小数/双精度,这里有一个相关的问题. 将可空的十进制数从json传递到ASP.NET MVC Controller Action?