Newtonsoft json反序列化字典
本文关键字:字典 反序列化 json Newtonsoft | 更新日期: 2023-09-27 17:54:23
我有以下类
[DataContract(IsReference = true)]
public abstract class Entity
{
[DataMember]
protected Dictionary<MyStruct, MyObject> MyDict;
...
}
我尝试使用newtonsoft Json序列化和反序列化,序列化工作。但在反序列化时,我得到以下错误:"创建一个TypeConverter将字符串转换为键类型",当我创建类型转换器时,它不会被反序列化器调用。
这是我如何使用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));
Json序列化器将键视为字符串,而不是对象。序列化器有一些您可以使用的属性,您可以执行以下操作:
[JsonObject()]
public class MyDictionaryType : Dictionary<MyStruct, MyObject>
{
}
[DataContract(IsReference = true)]
public abstract class Entity
{
[DataMember]
protected MyDictionaryType MyDict;
...
}