Json在继承时的奇怪行为

时间:2016-12-08 16:56:08

标签: c# json asp.net-mvc

我遇到了一类问题。

我有一个继承ICollection的ErrorModel类,裸骨。

public class ErrorsModel : ICollection<string>
    {
        private ICollection<string> Errors { get; set; }
        public bool HasErrors { get { return Errors != null && Errors.Any(); } }
        public string PartialView { get; set; }
}

省略了ICollection imp。因为它是标准的

当由控制器Action Json方法返回时

return Json(Errors)

结果是私有的Errors对象

[
  "Select a Country",
  "Select a City"
]

但是,当您删除继承时,您将获得对象的完整序列化。

{
"Count": 2,
  "HasErrors": true,
  "IsReadOnly": false
}

所以我的问题是在继承时导致奇数序列化行为的原因是什么?

1 个答案:

答案 0 :(得分:4)

您的JSON序列化程序将所有集合类视为数组。

JSON不支持数组和对象的混合。