//not sure about the date handling here public override IDictionary <string, object> Serialize(object obj, JavaScriptSerializer serializer) { IDictionary <string, object> values = new Dictionary <string, object>(); if (obj is IDynamic) { IDynamic idynamicObj = (IDynamic)obj; var properties = idynamicObj.GetDynamicMemberNames().ToList(); var staticProperties = idynamicObj.SerializableProperties(); if (staticProperties != null) { properties.AddRange(staticProperties); } //not sure how enums will be handled //strings and numbers should be ok foreach (var item in properties) { var value = idynamicObj[item]; values.Add(item, value); } } return(values); }