您还可以制作一个仅适用于ExpandoObject的特殊JSONConverter,然后将其注册到JavascriptSerializer的实例中。这样,您可以序列化expando的数组,expando对象的组合以及…,直到找到另一种未正确序列化的对象(“您想要的方式”),然后再制作一个Converter,或向其中添加其他类型这个。希望这可以帮助。
using System.Web.script.Serialization; public class ExpandoJSonConverter : JavascriptConverter{ public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavascriptSerializer serializer) { throw new NotImplementedException(); } public override IDictionary<string, object> Serialize(object obj, JavascriptSerializer serializer) { var result = new Dictionary<string, object>(); var dictionary = obj as IDictionary<string, object>; foreach (var item in dictionary) result.Add(item.Key, item.Value); return result; } public override IEnumerable<Type> SupportedTypes { get { return new ReadOnlyCollection<Type>(new Type[] { typeof(System.Dynamic.ExpandoObject) }); } }}使用转换器
var serializer = new JavascriptSerializer(); serializer.RegisterConverters(new JavascriptConverter[] { new ExpandoJSonConverter()});var json = serializer.Serialize(obj);


