156 votes

json.net a la méthode clé?

Si ma réponse a la clé "erreur", j'ai besoin de traiter l'erreur et d'afficher une 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!")
 

277voto

svick Points 81772

Il suffit d'utiliser x["error_msg"] . Si la propriété n'existe pas, elle renvoie null .

104voto

Jon Skeet Points 692016

JObject implémente IDictionary<string, JToken> , afin que vous puissiez utiliser:

 IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
 

... ou vous pouvez 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 convertir au préalable en IDictionary<string, JToken> .

4voto

kntx Points 76

En utilisant x["error_msg"] , si la clé "error_msg" existe mais que sa valeur est null, elle renvoie toujours null, non?

James Newton-King, l'auteur de JSON.net, a écrit ici http://stackoverflow.com/a/6529408/1125678 mais je dois admettre qu'une méthode HasKey () serait vraiment utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X