繁体   English   中英

newtonsoft json反序列化字典

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM