How do you serialize an enum array to a Json array of strings?

javascript, javascriptserializer, json.net

Solution

It would appear that in one of the later versions of Json.NET there is proper provision for this, via the `ItemConverterType` property of the `JsonProperty` attribute, as documented here:

http://james.newtonking.com/archive/2012/05/08/json-net-4-5-release-5-jsonproperty-enhancements.aspx

I was unable to try it out as I hit problems upgrading from Json.NET 3.5 that were related to my own project. In the end I converted my viewmodel to `IEnumerable<string>` as per Shmiddty's suggestion (there is still an impedance mismatch though and I will come back to refactor this in future).

Hope that helps anyone else with the same problem!

Example usage:

[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
IEnumerable<ContactType> AvailableContactTypes {get;set;} 

Problem

Based on Diego's unanswered comment under the top-voted answer in this question: JSON serialization of enum as string So for an enum: ``` public enum ContactType { Phone = 0, Email = 1, Mobile = 2 } ``` And for eg. a property: ``` //could contain ContactType.Phone, ContactType.Email, ContactType.Mobile IEnumerable<ContactType> AvailableContactTypes {get;set;} ``` To something like the JSON: ``` {ContactTypes : ['Phone','Email','Mobile']} ``` instead of ``` {ContactTypes : [0,1,2]} ``` As is the case with the normal JavaScriptSerializer?

Original source

Related problems