Asp.net mvc Json反序列化失败

Asp.net mvc Json反序列化失败,asp.net-mvc,json,Asp.net Mvc,Json,有人能解释一下为什么反序列化方法失败吗 [Test] public void Serialize_Deserialize_ExpandObject() { dynamic obj = new ExpandoObject(); obj.Name = "Claudio"; obj.Age = 32; JavaScriptSerializer ser = n

有人能解释一下为什么反序列化方法失败吗

        [Test]
        public void Serialize_Deserialize_ExpandObject()
        {
            dynamic obj = new ExpandoObject();
            obj.Name = "Claudio";
            obj.Age = 32;

            JavaScriptSerializer ser = new JavaScriptSerializer();
            string json = ser.Serialize(obj as IDictionary<string, object>);
            Console.WriteLine(json);

            IDictionary<string, object> deserialize = ser.Deserialize<IDictionary<string, object>>(json);
            Assert.IsTrue(deserialize.ContainsKey("Name"));
            Assert.IsTrue(deserialize.ContainsKey("Age"));
        }

ExpandoObject似乎被序列化为一个字典数组,而不是一个字典

它被序列化为[{Key:Name,Value:Claudio},{Key:Age,Value:32}],而不是{Name:Claudio,Age:32}

我猜ExpandooObject还实现了一些其他接口,比如IEnumerable和IDictionary,所以Serialize方法将其视为数组。强制转换为IDictionary没有什么区别,因为它实际上并不改变传递给Serialize方法的内容。但这一切似乎都与文件相矛盾

您可以反序列化到列表,但我认为这不是非常有用