如何将枚举数组序列化为 Json 字符串数组?

Mar*_*aud 6 javascript json.net javascriptserializer

根据迭戈在这个问题中得票最高的答案下未答复的评论:

枚举的 JSON 序列化为字符串

所以对于一个枚举:

public enum ContactType
{
    Phone = 0,
    Email = 1,
    Mobile = 2
}
Run Code Online (Sandbox Code Playgroud)

例如。一个属性:

//could contain ContactType.Phone, ContactType.Email, ContactType.Mobile
IEnumerable<ContactType> AvailableContactTypes {get;set;} 
Run Code Online (Sandbox Code Playgroud)

对于类似 JSON 的内容:

{ContactTypes : ['Phone','Email','Mobile']}
Run Code Online (Sandbox Code Playgroud)

代替

{ContactTypes : [0,1,2]}
Run Code Online (Sandbox Code Playgroud)

与普通 JavaScriptSerializer 的情况一样吗?

Mar*_*aud 3

看来在 Json.NET 的较新版本之一中,通过属性ItemConverterType的属性对此进行了适当的规定JsonProperty,如下所示:

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

我无法尝试它,因为我在从 Json.NET 3.5 升级时遇到了与我自己的项目相关的问题。最后,我IEnumerable<string>按照 Shmiddty 的建议将视图模型转换为(尽管仍然存在阻抗不匹配,我将来会回来重构这一点)。

希望能帮助其他遇到同样问题的人!

用法示例:

[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]
IEnumerable<ContactType> AvailableContactTypes {get;set;} 
Run Code Online (Sandbox Code Playgroud)