Если в моем ответе есть ключ «ошибка», мне нужно обработать ошибку и показать окно с предупреждением.
Существует ли в json.net метод haskey? Подобно:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Если в моем ответе есть ключ «ошибка», мне нужно обработать ошибку и показать окно с предупреждением.
Существует ли в json.net метод haskey? Подобно:
var x= JObject.Parse(string_my);
if(x.HasKey["error_msg"])
MessageBox.Show("Error!")
Ответы:
Просто используйте x["error_msg"]. Если свойство не существует, оно возвращается null.
null?
JValueчье Valueэто nullне просто null.
nullиспользовано, x["error_msg"] is Objectчтобы проверить, определено ли свойство в объекте JSON
x["error_msg"] != null, поэтому нет, он не проверяет, существует ли свойство и имеет значение null.
myJObject["level1property"]?["level2property"].
JObjectинвентарь IDictionary<string, JToken>, поэтому вы можете использовать:
IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
... или вы могли бы использовать TryGetValue. Он реализует оба метода с использованием явной реализации интерфейса, поэтому вы не можете использовать их без предварительного преобразования в IDictionary<string, JToken>.
JObject уже реализует IDictionary<string, JToken> . Это просто справочное задание. И нет, принятый ответ не проверяет, находится ли ключ в массиве ... он все еще использует обычный индексатор. То, что это выглядит как доступ к массиву, не означает, что это доступ к массиву. (Доступ к массиву не может осуществляться по строке.)
JObject.ContainsKey(string propertyName) был сделан как общедоступный метод в выпуске 11.0.1
Документация - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm