编程语言
首页 > 编程语言> > javascript – 如何将枚举数组序列化为Json字符串数组?

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

作者:互联网

参见英文答案 > Serialize a container of enums as strings using JSON.net                                    2个
基于迭戈在这个问题中最高投票回答的未答复评论:

JSON serialization of enum as string

所以对于一个枚举:

public enum ContactType
{
    Phone = 0,
    Email = 1,
    Mobile = 2
}

而对于例如.财产:

//could contain ContactType.Phone, ContactType.Email, ContactType.Mobile
IEnumerable<ContactType> AvailableContactTypes {get;set;} 

对于像JSON这样的东西:

{ContactTypes : ['Phone','Email','Mobile']}

代替

{ContactTypes : [0,1,2]}

和普通的JavaScriptSerializer一样吗?

解决方法:

我总是发现在这些情况下添加额外属性比尝试更改json.net解析器的行为更容易.

[JsonIgnore]
IEnumerable<ContactType> AvailableContactTypes {get;set;}

IEnumerable<string> AvailableContactTypesString
{
    get { return AvailableContactTypes.Select(c => c.ToString()); }
}

当然,如果你需要反序列化,你也需要在该属性上设置一个setter.

set { AvailableContactTypes = value
    .Select(c => Enum.Parse(typeof(ContactType), c) as ContactType); }

标签:javascript,json-net,javascriptserializer
来源: https://codeday.me/bug/20190629/1328823.html