Newtonsoft JSON of Dictionary 列出不同的枚举



>我正在使用 Json.NET,我正在尝试存储从枚举到其他枚举列表的字典映射。枚举密钥旨在指示哪个产品,以及该产品映射到的值 键枚举是指示其下可用的功能的枚举列表。

我正在考虑让每个值列表中的枚举类型取决于它们所属的产品。

我有以下课程:

public enum KeyEnum {
    Key1,
    Key2
}    
public enum ValEnum1 {
    Type1,
    Type2
}    
public enum ValEnum2 {
    Type3,
    Type4,
    Type5,
    Type6
}
class MyClass {
    public Dictionary<KeyEnum, List<Enum>> Data { get; set; }
}

我正在尝试做一个

var tmp = new MyClass() 
{
    Data = new Dictionary<KeyEnum, List<Enum>>()
    {
        new List<Enum>()
        {
            ValEnum2.Type6
        }
    }   
}
string newdata = JsonConvert.SerializeObject(tmp);
var myClass = JsonConvert.DeserializeObject<MyClass>(newdata);

我收到以下错误:

Newtonsoft.Json.JsonSerializationException: Error converting value 3 to type 'System.Enum'. Path 'Licenses.Audit[0]', line 1, position 160. ---> System.InvalidCastException: Unable to cast object of type 'System.Int64' to type 'System.Enum'.

我想我可以将所有枚举转换为 int,但使用枚举可能会更好。但是,我不确定如何在 C# 中正确执行此操作。

Newtonsoft将默认值序列化Enum其数值。然后它不知道如何将该数值序列化回Enum .您可以使用Enum上的属性将它们序列化为字符串值(以便数据传输对象是可以理解的),但要反序列化回对象,您必须实现自己的JsonConverter

使用更容易序列化的数据类型更容易。

相关内容

  • 没有找到相关文章

最新更新