![](/img/trans.png)
[英]NewtonSoft.Json, Unable to deserialize a child dictionary in a dictionary
[英]newtonsoft json deserialize dictionary
我有以下课程
[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;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.