我有以下课程
[DataContract(IsReference = true)]
public abstract class Entity
{
[DataMember]
protected Dictionary<MyStruct, MyObject> MyDict;
...
}
我尝试使用newtonsoft Json序列化和反序列化,序列化工作。 但是在deserializn上我收到以下错误: &#34;创建一个TypeConverter,将字符串转换为密钥类型&#34; , 当我创建一个类型转换器时,它不被deseializer调用。
这就是我使用JSON序列化程序的方法
StringBuilder sb = new StringBuilder();
TextWriter text = new StringWriter(sb);
var serializer = new JsonSerializer();
serializer.TypeNameHandling = TypeNameHandling.Auto;
var inst = new Instance();
serializer.Serialize(text, inst );
TextReader textReader = new StringReader(sb.ToString());
JsonReader reader = new JsonTextReader(textReader);
var res = serializer.Deserialize(reader, typeof(Instance));
答案 0 :(得分:3)
Json序列化程序将键视为字符串,而不是对象。序列化程序具有一些您可以使用的属性,您可以执行以下操作:
[JsonObject()]
public class MyDictionaryType : Dictionary<MyStruct, MyObject>
{
}
[DataContract(IsReference = true)]
public abstract class Entity
{
[DataMember]
protected MyDictionaryType MyDict;
...
}