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
?
JValue
chi Value
è null
, non solo null
.
null
è possibile utilizzare x["error_msg"] is Object
per 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"]
.
JObject
implementa 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