将 JSON 发布到 ASP.NET MVC 可空短属性
Posted
技术标签:
【中文标题】将 JSON 发布到 ASP.NET MVC 可空短属性【英文标题】:Posting JSON to ASP.NET MVC Nullable Short Property 【发布时间】:2012-09-27 13:42:26 【问题描述】:我通过 HTTP 将 JSON 发布到 ASP.NET MVC 4 Web 服务。 JSON 被反序列化为一个包含 Nullable
正在反序列化的 C# 对象:
Class MyClass
short? MyLittleNumber get;set;
如果 JSON 是这样的:
MyLittleNumber:"5"
它可以工作,但如果是这样的话:
MyLittleNumber:5
读取值失败,默认为NULL。
【问题讨论】:
【参考方案1】:分辨率: 我将 short(Int16) 更改为 int(Int32),它现在将读取该值,而不管它是否用引号括起来。
昨天我在理解这个区别之前大约 3 个小时与这个问题搏斗了,所以我想在这里找到答案。我相信这是由于 ASP.NET MVC 类将 JSON 反序列化到类中的一些缺陷造成的。
这里有一个关于可空小数/双精度的相关问题。 Passing nullable decimal from json to ASP.NET MVC Controller Action?
【讨论】:
致那些标记你的人——耻辱。这绝对是 ASP.NET MVC 中的一个错误。 感谢您的支持!看到任意的否决票让我感到惊讶和失望。如果它甚至可以帮助一个人,那么值得花时间发布问题和答案。 +1 感谢您的提示,默认模型活页夹当然似乎有一两个问题,这篇文章让我朝着正确的方向前进。对于任何对问题感兴趣的人,我们的 JSON 数据具有未加引号的数字,这些数字在 Decimal 上被错误地反序列化为 NULL?值为 0 时的属性...通过使用我自己的模型绑定器和 ServiceStack JSON 解析器,现在一切正常。 它帮助了我。我自己发现了这个错误并来到这里发布它,然后发现这个答案证实了我的怀疑。以上是关于将 JSON 发布到 ASP.NET MVC 可空短属性的主要内容,如果未能解决你的问题,请参考以下文章
从 JQuery 将 JSON 发布到 ASP.NET MVC 4 操作
使用防伪令牌将 JSON 模型发布到 ASP.Net MVC3
ASP.NET MVC 下UpdateModel可空未填写的参数为Null,为何不是空字符串
为啥 ASP.Net MVC 模型绑定器将空 JSON 数组绑定到 null?