简体   繁体   English

如何从JObject获取密钥值?

[英]How to get value by key from JObject?

I have a JObject like this: 我有一个像这样的JObject:

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

I want to get @STARTDATE and @ENDDATE value from JObject. 我想从JObject获取@STARTDATE和@ENDDATE值。


This is a sample code that I've tried to do the task: 这是我尝试执行此任务的示例代码:

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;
}

Note: The code above cannot get the value by key from JObject. 注意:上面的代码无法通过JObject的键获取值。


Could you help me to find a way to get the value by key from JObject? 你能帮我找到一种从JObject获取密钥值的方法吗?

This should help - 这应该有帮助 -

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

You can also get the value of an item in the jObject like this: 您还可以像这样获取jObject中项的值:

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

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM