2016-01-21 110 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

你能解释一下吗? {}到开始和结束 –