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

  • Автор темы Автор темы Kosilovka
  • Дата начала Дата начала

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
Больше подробностей, или пример кода. Наткнулся случайно на эту тему в гугле, когда искал для себя решение. Ты ищешь в словаре?
В моей ситуации код возвращало «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" все нормализировалось.
 
Последнее редактирование:
спасибо. не помню как уже решил, но буду иметь в виду
 
Есть распаршенный 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

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