2016-07-13 64 views
0

我有一個下面的JSON代碼,如何反序列化在C#中的JSON對象

{ 
    "dataContainer":{ 
    "sheets":{ 
     "1":{ 
      "0":{ 
       "1":{ 
        "type":6, 
        "value":2, 
        "value2":"11-15-1991" 
       }, 
       "2":{ 
        "type":10, 
        "value":3, 
        "value2":3 
       } 
      }, 
      "1":{ 
       "1":{ 
        "type":6, 
        "value":7, 
        "value2":"11-16-1991" 
       }, 
       "2":{ 
        "type":10, 
        "value":8, 
        "value2":8 
       } 
      } 
     }, 
     "2":{ 
      "0":{ 
       "1":{ 
        "type":6, 
        "value":2, 
        "value2":"11-15-1991" 
       }, 
       "2":{ 
        "type":10, 
        "value":3, 
        "value2":3 
       } 
      }, 
      "1":{ 
       "1":{ 
        "type":6, 
        "value":7, 
        "value2":"11-16-1991" 
       }, 
       "2":{ 
        "type":10, 
        "value":8, 
        "value2":8 
       } 
      } 
     } 
    }} 
} 

我需要反序列化的代碼,我已經試過了一個,

Dictionary<string,object> dict = ser.Deserialize<Dictionary<string, object>>(obj); 
List<object> sheetObject = new List<object>(); 
sheetObject = ((Dictionary<string, object>)dict["dataContainer"]).Values.ToList(); 
public object sheets = new object(); 
sheets = sheetObject[0]; 

,但是這是不工作我想能夠像下面一樣工作,

sheets[1][0][1].type 

如何實現這一目標?

+1

未通過驗證。 –

+0

http://json2csharp.com –

+0

另外你想要的是不可能的給定這種結構。 –

回答

0

Json.NET是要使用的庫。這個庫有一個函數,它將接收一個JSON字符串並返回一個代表JSON的「動態」變量。 語法是這樣的:

dynamic dict = JsonConvert.DeserializeObject(YOUR_JSON_STRING); 

現在,您可以動態地訪問整個JSON樹,如:

dynamic sheetObject = dict.dataContainer.sheets; 

在任何給定的水平遍歷孩子,只是使用foreach:

foreach (dynamic child in sheetObject.Children()) { /* do something */ } 
+0

感謝兄弟,但如果有任何可能的話,不使用Json.NET ..你能解決它嗎 –