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ückgegebennull
.quelle
null
?JValue
dessenValue
istnull
, nicht nurnull
.null
Sie verwendenx["error_msg"] is Object
, um zu überprüfen, ob die Eigenschaft im JSON-Objekt definiert istx["error_msg"] != null
. Nein, es wird nicht überprüft, ob die Eigenschaft vorhanden ist und den Wert von hatnull
.myJObject["level1property"]?["level2property"]
.JObject
implementiertIDictionary<string, JToken>
, so dass Sie verwenden können:... 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 konvertierenIDictionary<string, JToken>
.quelle
JObject
implementiert bereitsIDictionary<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 erstelltDokumentation - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm
quelle