2016-05-27 82 views
5

我有一個JObject這樣的:如何通過JObject的鍵獲取值?

{ 
    "@STARTDATE": "'2016-02-17 00:00:00.000'", 
    "@ENDDATE": "'2016-02-18 23:59:00.000'" 
} 

我想從JObject獲得@STARTDATE和@ENDDATE值。


這是我一直試圖做任務的示例代碼:

JObject json = JObject.Parse("{\"@STARTDATE\": \"'2016-02-17 00:00:00.000'\",\"@ENDDATE\": \"'2016-02-18 23:59:00.000'\"}"); 
var key = "@STARTDATE"; 

var value = GetJArrayValue(json, key); 

private string GetJArrayValue(JObject yourJArray, JToken key) 
{ 
    string value = ""; 
    foreach (JToken item in yourJArray.Children()) 
    { 
     var itemProperties = item.Children<JProperty>(); 
     //If the property name is equal to key, we get the value 
     var myElement = itemProperties.FirstOrDefault(x => x.Name == key.ToString()); 
     value = myElement.Value.ToString(); //It run into an exception here because myElement is null 
     break; 
    } 
    return value; 
} 

注:上面的代碼不能從JObject鍵獲得的價值。


你能幫我找到一種方式來獲得使用key從JObject價值?

+2

您可能希望看看這個文檔頁面: http://www.newtonsoft.com/json/help/html/linqtojson.htm – mymo

+0

謝謝。我需要更多地瞭解這一點。 –

回答

5

這將有助於 -

var json = "{'@STARTDATE': '2016-02-17 00:00:00.000', '@ENDDATE': '2016-02-18 23:59:00.000' }"; 
var fdate = JObject.Parse(json)["@STARTDATE"]; 
+0

你是對的!非常感謝您的幫助。 –

1

您還可以得到一個項目的價值在jObject這樣的:

JToken value; 
if (json.TryGetValue(key, out value)) 
{ 
    DoSomething(value); 
} 
0

試試這個:

private string GetJArrayValue(JObject yourJArray, string key) 
{ 
    foreach (KeyValuePair<string, JToken> keyValuePair in yourJArray) 
    { 
     if (key == keyValuePair.Key) 
     { 
      return keyValuePair.Value.ToString(); 
     } 
    } 
}