Biorąc pod uwagę następujące w C#:Serializować C# Enum Definicja JSON
[Flags]
public enum MyFlags {
None = 0,
First = 1 << 0,
Second = 1 << 1,
Third = 1 << 2,
Fourth = 1 << 3
}
Czy istnieją metody ServiceStack.Text
dla szeregowania z następującym JSON?
{
"MyFlags": {
"None": 0,
"First": 1,
"Second": 2,
"Third": 4,
"Fourth": 8
}
}
Obecnie używam poniższej procedury, czy istnieją lepsze sposoby na zrobienie tego?
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, niezły kod. BTW: 's/typeof (Highlights)/type/g' – Heinzi
@GavinFaux Wyliczenie nie jest zbiorem. Wyliczenia są jak klasy ze stałymi, więc nie uważam, że "legalne" serializowanie ich jako obiektów lub tablic asocjacyjnych. –
@ Eliyubov: Nie zgadzam się, pożądany wynik jest zupełnie inny niż ten w połączonym pytaniu. – Heinzi