Если в моем ответе есть ключ «ошибка», мне нужно обработать ошибку и показать окно с предупреждением.
Существует ли в 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