2016-01-21 93 views
1

我想desrialize這個字符串:反序列化JSON到

storage = "{\"1\":{\"1\":\"aaa\"},\"2\":{\"1\":\"bbb\"}}"; 

它的工作原理:

var LocalStorageOBJ1 = JsonConvert.DeserializeObject<Dictionary<DataModels.StoragePrimaryKeys, 
                Dictionary<DataModels.StorageSecondaryKeys, string>>>(storage); 

,但我想用一個類來做到這一點,是這樣的:

var LocalStorageOBJ = JsonConvert.DeserializeObject<MyClass>(storage); 

MyClass是:

public class DataModels 
{ 
    public enum StoragePrimaryKeys 
    { 
     Login = 1, 
     Account = 2 
    }; 

    public enum StorageSecondaryKeys 
    { 
     JobTitle = 1, 
     JobId = 2, 
     JobLocation = 3, 
     RenewDate = 4, 
     ExpirationDate = 5 
    }; 
} 


public class MyClass 
{ 
    public Dictionary<DataModels.StoragePrimaryKeys, ForiegnData> PrimaryDictionary { get; set; } 
} 
public class ForiegnData 
{ 
    public Dictionary<DataModels.StorageSecondaryKeys, string> ForeignDictionary { get; set; } 
} 

不幸的是,當我反序列化它時,我得到了空值。

任何幫助表示讚賞!

回答

3

MyClass的不

Dictionary<DataModels.StoragePrimaryKeys, Dictionary<DataModels.StorageSecondaryKeys, string>> 

MyClass的HAS

Dictionary<DataModels.StoragePrimaryKeys, Dictionary<DataModels.StorageSecondaryKeys, string>> 

所以,你應該封裝JSON字符串正確:

{\"PrimaryDictionary\" : {\"1\":{\"1\":\"aaa\"},\"2\":{\"1\":\"bbb\"}}} 
+0

謝謝你,但UT不工作..我有在MyClass的PrimaryDictionary變量中獲得null .. –

+0

MyClass不是Dictionary >。 MyClass HAS Dictionary >。所以,也許你必須添加另一個封裝({}開頭和結尾) –

+0

你能解釋一下嗎? {}到開始和結束 –