Jeśli moja odpowiedź zawiera klucz „błąd”, muszę przetworzyć błąd i wyświetlić okno ostrzegawcze.
Czy istnieje metoda „haskey” w json.net? Lubić:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Jeśli moja odpowiedź zawiera klucz „błąd”, muszę przetworzyć błąd i wyświetlić okno ostrzegawcze.
Czy istnieje metoda „haskey” w json.net? Lubić:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Odpowiedzi:
Po prostu użyj x["error_msg"]. Jeśli właściwość nie istnieje, zwraca null.
null?
JValueczyj Valuejest null, a nie tylko null.
nullmożesz użyć x["error_msg"] is Objectdo sprawdzenia, czy właściwość jest zdefiniowana w obiekcie JSON
x["error_msg"] != null, więc nie, nie sprawdza, czy właściwość istnieje i ma wartość null.
myJObject["level1property"]?["level2property"].
JObjectnarzędzia IDictionary<string, JToken>, dzięki czemu możesz użyć:
IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
... lub możesz użyć TryGetValue. Implementuje obie metody przy użyciu jawnej implementacji interfejsu, więc nie możesz ich używać bez uprzedniej konwersji na IDictionary<string, JToken>chociaż.
JObject już wdraża IDictionary<string, JToken> . To jest tylko przypisanie referencyjne. I nie, zaakceptowana odpowiedź nie oznacza sprawdzenia, czy klucz znajduje się w tablicy ... nadal używa normalnego indeksatora. To, że wygląda na dostęp do tablicy, nie oznacza, że jest to dostęp do tablicy. (Dostęp do tablicy nie może odbywać się za pomocą ciągu znaków w pierwszej kolejności).
JObject.ContainsKey(string propertyName) został udostępniony jako metoda publiczna w wersji 11.0.1
Dokumentacja - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm