Wenn meine Antwort den Schlüssel "Fehler" enthält, muss ich den Fehler verarbeiten und das Warnfeld anzeigen.
Gibt es eine "haskey" -Methode in json.net? Mögen:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Wenn meine Antwort den Schlüssel "Fehler" enthält, muss ich den Fehler verarbeiten und das Warnfeld anzeigen.
Gibt es eine "haskey" -Methode in json.net? Mögen:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Antworten:
Einfach benutzen x["error_msg"]. Wenn die Eigenschaft nicht vorhanden ist, wird sie zurückgegeben null.
null?
JValuedessen Valueist null, nicht nur null.
nullSie verwenden x["error_msg"] is Object, um zu überprüfen, ob die Eigenschaft im JSON-Objekt definiert ist
x["error_msg"] != null. Nein, es wird nicht überprüft, ob die Eigenschaft vorhanden ist und den Wert von hat null.
myJObject["level1property"]?["level2property"].
JObjectimplementiert IDictionary<string, JToken>, so dass Sie verwenden können:
IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
... oder du könntest verwenden TryGetValue. Beide Methoden werden mithilfe einer expliziten Schnittstellenimplementierung implementiert, sodass Sie sie nicht verwenden können, ohne sie zuvor zu konvertieren IDictionary<string, JToken>.
JObject implementiert bereits IDictionary<string, JToken> . Dies ist nur eine Referenzaufgabe. Und nein, die akzeptierte Antwort prüft nicht, ob sich der Schlüssel in einem Array befindet . Es wird immer noch ein normaler Indexer verwendet. Nur weil es so aussieht, als wäre es ein Array-Zugriff, heißt das nicht, dass es sich um einen Array-Zugriff handelt. (Array-Zugriff kann nicht über eine Zeichenfolge erfolgen.)
JObject.ContainsKey(string propertyName) wurde als öffentliche Methode in Version 11.0.1 erstellt
Dokumentation - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm