的WebAPI。缺少枚举属性时定义默认的Json值

时间:2015-01-06 10:51:48

标签: asp.net asp.net-mvc-5 json.net asp.net-web-api

我有一个接受Post的webapi(例如)

public Foo Post(MyInfo info)
        {
            return new Foo();
        }

MyInfo可能是这样的

public class MyInfo 
    {
        [JsonProperty(PropertyName = "n")]
        public int MyInt1{ get; set; }

        [JsonProperty(PropertyName = "v")]
        public string MyString1{ get; set; }
}

当我的桌面应用程序(版本1)向此webapi发布请求时,一切正常。我用JsonConverter序列化对象。

现在让我们说,我想在MyInfo中添加一个新参数,如下所示

 public class MyInfo 
        {
            [JsonProperty(PropertyName = "n")]
            public int MyInt1{ get; set; }

            [JsonProperty(PropertyName = "v")]
            public string MyString1{ get; set; }

            [JsonProperty(PropertyName = "s")]
            public MyEnum EnumValue{ get; set; }
    }

我更新了网站和webapi,并发布了我的桌面应用程序的新版本(版本2)。

webapi适用于我桌面应用程序的第2版。但是,当我使用我的版本1时,webapi中的参数(MyInfo info)结束为null。 提醒一下,版本1发送完全相同的MyInfo对象,但缺少一个属性。

如果缺少该属性,我该如何避免此问题并定义默认值。

由于

1 个答案:

答案 0 :(得分:0)

实际上问题是我有两个具有相同Json属性名称的属性。

它完全与默认值无关。