【发布时间】:2013-01-24 10:21:51
【问题描述】:
在 C# 中给出以下内容:
[Flags]
public enum MyFlags {
None = 0,
First = 1 << 0,
Second = 1 << 1,
Third = 1 << 2,
Fourth = 1 << 3
}
ServiceStack.Text 中是否有任何现有方法可以序列化为以下 JSON?
{
"MyFlags": {
"None": 0,
"First": 1,
"Second": 2,
"Third": 4,
"Fourth": 8
}
}
目前我正在使用下面的例程,有没有更好的方法来做到这一点?
public static string ToJson(this Type type)
{
var stringBuilder = new StringBuilder();
Array values = Enum.GetValues(type);
stringBuilder.Append(string.Format(@"{{ ""{0}"": {{", type.Name));
foreach (Enum value in values)
{
stringBuilder.Append(
string.Format(
@"""{0}"": {1},",
Enum.GetName(typeof(Highlights), value),
Convert.ChangeType(value, value.GetTypeCode())));
}
stringBuilder.Remove(stringBuilder.Length - 1, 1);
stringBuilder.Append("}}");
return stringBuilder.ToString();
}
【问题讨论】:
-
+1,不错的代码。顺便说一句:
s/typeof(Highlights)/type/g -
@GavinFaux 枚举不是集合。枚举就像具有常量的类,因此我不认为将它们序列化为对象或关联数组是“合法的”。
-
@ElYusubov:我不同意,所需的输出与链接问题中的输出完全不同。
标签: c# json serialization enums servicestack