2014-03-27 306 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; 

    ... 
} 
相關問題