Если в моем ответе есть ключ «ошибка», мне нужно обработать ошибку и показать окно с предупреждением.
Существует ли в 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
?
- person Andreas Furster; 04.03.2015
JValue
, Value
которого null
, а не только null
.
- person svick; 04.03.2015
null
, вы можете использовать x["error_msg"] is Object
, чтобы проверить, определено ли свойство в объекте JSON.
- person stonito; 15.11.2016
x["error_msg"] != null
, поэтому нет, он не проверяет, существует ли свойство и имеет значение null
.
- person svick; 15.11.2016
myJObject["level1property"]["level2property"]
с throw, если level1property
не существует. Вы должны сначала проверить myJObject["level1property"]
.
- person William T. Mallard; 04.01.2017
myJObject["level1property"]?["level2property"]
.
- person svick; 04.01.2017
JObject
реализует IDictionary<string, JToken>
, поэтому вы можете использовать:
IDictionary<string, JToken> dictionary = x;
if (dictionary.ContainsKey("error_msg"))
... или вы можете использовать TryGetValue
. Он реализует оба метода с использованием явной реализации интерфейса, поэтому вы не можете использовать их без предварительного преобразования в IDictionary<string, JToken>
.
JObject
уже реализует IDictionary<string, JToken>
. Это просто справочное задание. И нет, принятый ответ не проверяет, находится ли ключ в массиве ... он все еще использует обычный индексатор. То, что это выглядит как доступ к массиву, не означает, что это есть доступ к массиву. (Доступ к массиву не может быть в первую очередь строковым.)
- person Jon Skeet; 29.08.2011
JObject.ContainsKey(string propertyName)
был сделан как общедоступный метод в выпуске 11.0.1
Документация - https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_ContainsKey.htm