web-dev-qa-db-fra.com

Comment obtenir de la valeur par clé de JObject?

J'ai un JObject comme ça:

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

Je veux obtenir les valeurs @STARTDATE et @ENDDATE de JObject.


Voici un exemple de code que j'ai essayé de faire:

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

Remarque: le code ci-dessus ne peut pas obtenir la valeur par clé de JObject.


Pourriez-vous m'aider à trouver un moyen d'obtenir la valeur par clé de JObject?

24
Trind 07

Cela devrait aider -

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

Vous pouvez également obtenir la valeur d'un élément dans le jObject comme ceci:

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

Essaye ça:

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