我有一个UserProfile
C#类,其中包含公开列表List<System.Enum> Bonuses;
,其元素各自属于几种具体类型的枚举之一:BonusUI
,BonusMusic
,{ {1}}等等。
我正在使用Json.NET,我想序列化/反序列化BonusMode
对象。我将UserProfile
应用于每个具体的枚举类型,以便将它们保存为字符串而不是整数。但是,这还不够,因为保存的枚举值甚至不包含其确切类型。
[JsonConverter(typeof(StringEnumConverter))]
例如,当反序列化程序在列表中找到BonusMusic.MainTheme(序列化为“MainTheme”)时会看到此错误:
将值“MainTheme”转换为'System.Enum'类型时出错。
我怎么解决这个问题?
答案 0 :(得分:1)
作为简单字符串的MainTheme无法转换为枚举。你应该用
之类的东西来解析它BonusMusic enum = (BonusMusic)Enum.Parse(typeof(BonusMusic), "MainTheme");
也许你可以实现一个JSON自定义序列化程序,它可以解析Bonuses数组中的值
您可以查看JSON.NET Implementing Custom Serialization
问候。