Как сериализовать System.Enum с помощью Newtonsoft.Json?

У меня есть следующее перечисление

И следующий code выдает исключение

Вероятно, это связано с тем, что сериализованный Json не содержит определения типа, которое намекает на исходный тип перечисления времени выполнения, и похоже, что использование TypeNameAssemblyFormatHandling тоже не помогает.

public enum SomeEnum
{ 
    One,Two, Three
}
 Dictionary<Enum, string> map = new Dictionary<Enum, string>()
 { {SomeEnum.One,"1"},{SomeEnum.Two,"2"},{SomeEnum.Three,"3"}   };

 string mapStr = JsonConvert.SerializeObject(map, Formatting.None,new JsonSerializerSettings() { TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Full});

 var newMap = JsonConvert.DeserializeObject<Dictionary<Enum, string>>(mapStr);
Newtonsoft.Json.JsonSerializationException: 'Could not convert string 'One' to dictionary key type 'System.Enum'. Create a TypeConverter to convert from the string to the key type object. Path 'One', line 1, position 7.'
Максимильян
Вопрос задан22 января 2024 г.

1 Ответ

2
Артемий
Ответ получен15 сентября 2024 г.

Ваш ответ

Загрузить файл.