2

我通过 HTTP 将 JSON 发布到 ASP.NET MVC 4 Web 服务。JSON 被反序列化为一个包含 Nullable<Int16> 属性(又名“short?”)的对象。当发布的 JSON 将该属性的值用引号引起来时,该值就成功反序列化。如果它没有用引号括起来,则该值始终为空。

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

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

如果 JSON 是这样的:

{MyLittleNumber:"5"}

它有效,但如果是这样:

{MyLittleNumber:5}

它无法读取该值并默认为 NULL。

4

1 回答 1

5

解决方案:我将 short(Int16) 更改为 int(Int32),它现在将读取该值,而不管它是否包含在引号中。

在理解这个区别之前,我昨天在这个问题上挣扎了大约 3 个小时,所以我想在这里找到答案。我相信这是由于 ASP.NET MVC 类将 JSON 反序列化到类中的一些缺陷造成的。

一个相关的问题是关于可空小数/双精度数。 将可空小数从 json 传递到 ASP.NET MVC 控制器操作?

于 2012-09-27T13:42:26.103 回答