Как проверить на существанаия элемент json в C#

Kosilovka

Новичок
Регистрация
12.05.2017
Сообщения
18
Благодарностей
4
Баллы
3
Есть распаршенный json c подобной структурой
Код:
project.Json.data.items.regular[1].sellingMode.buyNow.price.amount
иногда такой вложенности не существует
Код:
project.Json.data.items.regular[1].sellingMode.buyNow
как проверить на существование ?
 
  • Спасибо
Реакции: orka13

orka13

Client
Регистрация
07.05.2015
Сообщения
2 163
Благодарностей
2 163
Баллы
113
Больше подробностей, или пример кода. Наткнулся случайно на эту тему в гугле, когда искал для себя решение. Ты ищешь в словаре?
В моей ситуации код возвращало «The given key was not present in the dictionary» если не находило елемента. Использую в шаблоне Newtonsoft.Json.
Помогают решения из этой темы ( я через ContainsKey сделал):
https://stackoverflow.com/a/26244404/7355688
Пример моего быдло-кода (я не кодер, может есть и лучше решение, но у меня заработало):
Код:
var json = project.Variables["json"].Value;
var jsoner = new System.Web.Script.Serialization.JavaScriptSerializer();
Dictionary < string, dynamic > data = jsoner.Deserialize < Dictionary < string, dynamic >> (json);
var items = data["data"]["features"];
for (int i = 0; i < items.Count; i++) {
if (items[i]["properties"]["CompanyMetaData"].ContainsKey("Features"))
{
   var Features = items[i]["properties"]["CompanyMetaData"]["Features"];
}
}
Раньше ругалось, если в json в родительском блоке ["data"]["features"] не было элемента ["properties"]["CompanyMetaData"]["Features"] , а с проверкой через "if" все нормализировалось.
 
Последнее редактирование:

Kosilovka

Новичок
Регистрация
12.05.2017
Сообщения
18
Благодарностей
4
Баллы
3
спасибо. не помню как уже решил, но буду иметь в виду
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
Есть распаршенный json c подобной структурой
Код:
project.Json.data.items.regular[1].sellingMode.buyNow.price.amount
иногда такой вложенности не существует
Код:
project.Json.data.items.regular[1].sellingMode.buyNow
как проверить на существование ?
тайные знания
Код:
project.Json.data.items.regular[1].sellingMode.buyNow.GetMembersList();
это будет список (List<string>) полей текущего уровня
или так можно посмотреть что это конечное значение
Код:
project.Json.data.items.regular[1].sellingMode.buyNow is string;
 
  • Спасибо
Реакции: zombie и evgen_po

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 717
Благодарностей
1 375
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)