2014-03-27 296 views
0

我有下面的类newtonsoft JSON反序列化字典

[DataContract(IsReference = true)] 
public abstract class Entity 
{ 
    [DataMember] 
    protected Dictionary<MyStruct, MyObject> MyDict; 

    ... 
} 

我尝试序列和使用newtonsoft的Json反序列化,序列化工作。 但在deserializn我得到以下错误: “创建TypeConverter,才能从字符串转换成键类型”, 当我创建一个类型转换器就不会被称为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)); 
+1

你需要显示更多的代码。 –

+0

上面添加了如何使用序列化程序 –

回答

3

的JSON序列对待键作为字符串,而不是作为对象。该序列化程序有一些属性,你可以使用你可以执行以下操作:

[JsonObject()] 
public class MyDictionaryType : Dictionary<MyStruct, MyObject> 
{ 
} 


[DataContract(IsReference = true)] 
public abstract class Entity 
{ 
    [DataMember] 
    protected MyDictionaryType MyDict; 

    ... 
} 
相关问题