Кажется, что ExpandoObject сериализуется как массив (из словарей), а не как словарь.
Он сериализуется как [{"Key":"Name","Value":"Claudio"},{"Key":"Age","Value":32}]
, а не {"Name":"Claudio","Age":32}
Я думаю, что естьнекоторый другой интерфейс, который ExpandoObject реализует как IEnumerable (а также IDictionary <>), поэтому метод Serialize обрабатывает его как массив.Приведение (as IDictionary<string, object>
) не имеет значения, поскольку оно фактически не изменяет то, что передается в метод Serialize.Но все это, кажется, противоречит документации http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx.
Вы можете десериализовать до List<IDictionary<string, object>>
, но я полагаю, это не очень полезно.