2015-09-14 58 views
1
{ 
     "contentServiceInfo": { 
      "contentServiceId": 16199, 
      "siteId": 9814, 
      "containerInfo": { 
       "containerName": "credits", 
       "assetType": 2 
      } 
     }, 

上面的代碼是從服務器Json響應。我使用NewtonSoft獲取信息。 現在我想從Containerinfo對象中獲取containerName的值。 任何人都可以爲我提供解決方案。 我嘗試下面的代碼來獲取詳細信息從JsonRespone數組獲取數據

foreach (JObject content in o.Children<JObject>()) 
      { 
       foreach (JProperty prop in content.Properties()) 
       { 
        //Console.WriteLine(prop.Name); 
        if (prop.Name == "containerName") 
        { 
         AccType = prop.Value.ToString(); 
        } 

       }     
      } 

但是還是我不能夠獲取數據

回答

0

您可以使用動態對象,如果你沒有一個類。

string json = "{\"contentServiceInfo\":{\"contentServiceId\":16199,\"siteId\":9814,\"containerInfo\":{\"containerName\":\"credits\",\"assetType\":2}}}"; 
dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);     
var containerName = data.contentServiceInfo.containerInfo.containerName; 

如果JSON數據是一個數組嘗試以下操作:

string json = "[{\"contentServiceInfo\":{\"contentServiceId\":16199,\"siteId\":9814,\"containerInfo\":{\"containerName\":\"credits\",\"assetType\":2}}}]"; 
dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json); 
var containerName = data[0].contentServiceInfo.containerInfo.containerName; 
Console.WriteLine(containerName); 
+0

我收到以下異常:「Newtonsoft.Json.Linq.JArray」不包含「contentServiceInfo」的定義。這是我如何轉換響應和獲取數據:JArray o = JArray.Parse(json_siteResp); –

+0

什麼是您的Newtonsoft.json軟件包版本? Mine:

+0

1.0我已經添加了netwonsoft的參考 –