Si ma réponse a la clé "erreur", je dois traiter l'erreur et afficher la boîte d'avertissement.
Existe-t-il une méthode "haskey" dans json.net? Comme:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Si ma réponse a la clé "erreur", je dois traiter l'erreur et afficher la boîte d'avertissement.
Existe-t-il une méthode "haskey" dans json.net? Comme:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Réponses:
Utilisez simplement x["error_msg"]
. Si la propriété n'existe pas, elle retourne null
.
null
?
JValue
dont Value
est null
, pas seulement null
.
null
vous pouvez l'utiliser x["error_msg"] is Object
pour vérifier si la propriété est définie dans l'objet JSON
x["error_msg"] != null
, donc non, cela ne vérifie pas que la propriété existe et a la valeur de null
.
myJObject["level1property"]?["level2property"]
.
JObject
implémentes IDictionary<string, JToken>
, vous pouvez donc utiliser:
IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
... ou vous pourriez utiliser TryGetValue
. Il implémente les deux méthodes en utilisant une implémentation d'interface explicite, vous ne pouvez donc pas les utiliser sans d'abord les convertir en IDictionary<string, JToken>
cependant.
JObject
met déjà en œuvre IDictionary<string, JToken>
. Ceci est juste une affectation de référence. Et non, la réponse acceptée ne vérifie pas si la clé est dans un tableau ... elle utilise toujours un indexeur normal. Ce n'est pas parce que cela ressemble à un accès au tableau qu'il s'agit d'un accès au tableau. (L'accès au tableau ne peut pas se faire par une chaîne en premier lieu.)
JObject.ContainsKey(string propertyName)
a été faite comme méthode publique dans la version 11.0.1
Documentation - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm