2016-07-22 59 views
0

在下面的JSON中,我試圖訪問頭中的第二個數組。基本上需要捕獲「節點」,「百分比」,「時間」,「文件系統」,因爲我將不得不插入到SQL中。我的代碼給出了完整的頭數組。在JSON中訪問子令牌

JObject jsonObject = JObject.Parse(jsonString); 
      List<string> childTokens = new List<string>(); 
      foreach (var childToken in jsonObject.Children<JProperty>()) 
       childTokens.Add(childToken.Name); 

      foreach (string childToken in childTokens) 
     { 
      if (jsonObject[childToken] is JObject) 
      { 
       JObject jObject = (JObject)jsonObject[childToken]; 
       var jProperty = jObject.Children<JProperty>(); 

      try 

       { 


        if (jProperty.LastOrDefault(x => x.Name == "header") != null) 
        { 
         foreach (var headerValue in jProperty.LastOrDefault(x => x.Name == "header").Value.Children()) 
          table.Columns.Add("[" + headerValue.ToString() + "]"); 
         table.Columns.Add("[ID]"); 
         table.Columns.Add("[comments]"); 
        } 

JSON樣本:

"DISK" : { 
     "alarm_count" : 5, 
     "column_width" : [ 
     12, 
     14, 
     16, 
     14 
     ], 
     "header" : [ 
     [ 
      "", 
      "Max Disk Usage", 
      3 
     ], 
     [ 
      "Node", 
      "Percentage", 
      "Time", 
      "File System" 
     ] 
     ] } 

我可以在頭陣..不想硬編碼的數量。我應該總是能夠挑頭的孩子最後一個數組token..Please建議..感謝

回答

1

假設你的JSON片段是有效的,就像一個對象的一部分:

{ 
    "DISK": { 
    "alarm_count": 5, 
    "column_width": [ 
     12, 
     14, 
     16, 
     14 
    ], 
    "header": [ 
     [ 
     "", 
     "Max Disk Usage", 
     3 
     ], 
     [ 
     "Node", 
     "Percentage", 
     "Time", 
     "File System" 
     ] 
    ] 
    } 
} 

你可以這樣做:

JObject obj = ...; 
var secondHeader = obj["DISK"]["header"].Last(); 
+0

您好,我可以在頭陣列的N多..我不想硬代碼..我想總是挑頭中的最後一個項目..謝謝 – user1046415

+0

你總是有linq來幫助你。 –

+0

是的,我嘗試LINQ獲取標題元素..看起來像我錯過了一些東西,以獲得最後一個數組元素。謝謝..請告知 – user1046415