Json.NET序列化List <system.enum>并返回具体类型

时间:2016-03-08 17:03:03

标签: c# json serialization enums json.net

我有一个UserProfile C#类,其中包含公开列表List<System.Enum> Bonuses;,其元素各自属于几种具体类型的枚举之一:BonusUIBonusMusic,{ {1}}等等。

我正在使用Json.NET,我想序列化/反序列化BonusMode对象。我将UserProfile应用于每个具体的枚举类型,以便将它们保存为字符串而不是整数。但是,这还不够,因为保存的枚举值甚至不包含其确切类型。

[JsonConverter(typeof(StringEnumConverter))]

例如,当反序列化程序在列表中找到BonusMusic.MainTheme(序列化为“MainTheme”)时会看到此错误:

  

将值“MainTheme”转换为'System.Enum'类型时出错。

我怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

作为简单字符串的MainTheme无法转换为枚举。你应该用

之类的东西来解析它
BonusMusic enum = (BonusMusic)Enum.Parse(typeof(BonusMusic), "MainTheme");

也许你可以实现一个JSON自定义序列化程序,它可以解析Bonuses数组中的值

您可以查看JSON.NET Implementing Custom Serialization

问候。