Se la mia risposta ha la chiave "errore", devo elaborare l'errore e mostrare la finestra di avviso.
Esiste un metodo "haskey" in json.net? Piace:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Se la mia risposta ha la chiave "errore", devo elaborare l'errore e mostrare la finestra di avviso.
Esiste un metodo "haskey" in json.net? Piace:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Risposte:
Basta usare x["error_msg"]. Se la proprietà non esiste, restituisce null.
null?
JValuechi Valueè null, non solo null.
nullè possibile utilizzare x["error_msg"] is Objectper verificare se la proprietà è definita nell'oggetto JSON
x["error_msg"] != null, quindi no, non controlla che la proprietà esista e abbia il valore di null.
myJObject["level1property"]?["level2property"].
JObjectimplementa IDictionary<string, JToken>, quindi puoi usare:
IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
... o potresti usare TryGetValue. Implementa entrambi i metodi utilizzando l'implementazione esplicita dell'interfaccia, quindi non è possibile utilizzarli senza prima convertirsi in IDictionary<string, JToken>però.
JObject già implementa IDictionary<string, JToken> . Questo è solo un compito di riferimento. E no, la risposta accettata non sta controllando se la chiave è in un array ... sta ancora usando un normale indicizzatore. Solo perché sembra che l'accesso all'array non significhi che è l' accesso all'array. (L'accesso all'array non può essere in primo luogo tramite una stringa.)
JObject.ContainsKey(string propertyName) è stato creato come metodo pubblico nella versione 11.0.1
Documentazione - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm