2016-10-14 94 views
0

我正在嘗試從我的Web服務中提取數據。我設法使用HTTPClient從Web服務獲得成功響應。但是,我無法提取具體的值。例如,我的JSON文檔讀取爲從response.Content.ReadStringASync中提取數據

{"d":[{"__type":"Info:#website.Model","infoClosingHours":"06:00:00 PM","infoID":1,"infoOpeningDays":"Monday","infoOpeningHours":"09:00:00 AM","infoStatus":"Open"}]}

我想要得到的infoOpeningDays,但是,我無法做到這一點。

我嘗試使用

dynamicObject.GetType().GetProperty("infoOpeningDays").GetValue(dynamicObject, null); 

dynamicObject["infoOpeningDays"]; 

但它不停地給我空。

這裏是我的代碼

private async void GetData(object sender, EventArgs e) 
     { 
      HttpClient client = new HttpClient(); 
      client.BaseAddress = new Uri("ip"); 

      // Add an Accept header for JSON format. 
      client.DefaultRequestHeaders.Accept.Add(
      new MediaTypeWithQualityHeaderValue("application/json")); 

      try{ 
       HttpResponseMessage response = client.GetAsync("WebServices/information.svc/GetInformationJSON").Result; 
       if (response.IsSuccessStatusCode) 
       { 
        string jsonString = await response.Content.ReadAsStringAsync(); 
        dynamic dynamicObject = JsonConvert.DeserializeObject(jsonString); 
        //string abc = dynamicObject.IEnumerator.[0].IEnumerator.[0].IEnumerator.[0].IEnumerator.[5].Name; 
        string abc = dynamicObject.GetType().GetProperty("infoOpeningDays").GetValue(dynamicObject, null); 
       } 
      } 
      catch 
      { 

      } 

     } 

回答

0

您應該直接從您的動態對象訪問屬性是這樣的:

dynamic dynamicObject = JsonConvert.DeserializeObject(json); 
string infoClosingHours = dynamicObject.d[0].infoClosingHours; 

或者這是同

string infoClosingHours = dynamicObject.d[0]["infoClosingHours"];