Проверка существования JSON перед инсертом в бд

zerosearcher

Client
Регистрация
17.09.2022
Сообщения
15
Благодарностей
2
Баллы
3
Всем привет, в процессе работы над одним проектом столкнулся с затупом который пока не получилось решить

Работаю с вк апи, сделал проект под получение токкенов для апи. Тут всё просто проект берёт данные, авторизируеться через браузер, далее получает апи ключ.

Затем я сразу делаю get запрос на метод account.getProfileInfo. Данные полученные этим методом записываю в бд (id, имя, фамилия, пол и т.д.)

в процессе работы с вкапи стало понятно что некоторых полей у некоторых пользователей может и не быть, например поле девичья фамилия у мужиков
по такому случаю я написал при помощи chatGPT c# кубик, который проверяет значения полученные по апи, и если в каком то из них пустота, то заменяет её на слово empty. Таким образом я могу не переживать что в бд будет ошибка из за пустого значения.

сам сниппет выглядит вот так
C#:
project.Variables["vk_id"].Value = "";

// Получаем значение vk_id и преобразуем его в строку
var vk_id = project.Json.response.id.ToString();

// Проверяем, является ли значение vk_id пустотой
if (string.IsNullOrEmpty(vk_id))
{
    // Если vk_id пустота, заменяем его на "empty"
    vk_id = "empty";
}

// Записываем значение vk_id в переменную
project.Variables["vk_id"].Value = vk_id;

//================================================//


// Очищаем переменную
project.Variables["vk_firstName"].Value = "";

// Получаем значение vk_firstName и преобразуем его в строку
var vk_firstName = project.Json.response.first_name.ToString();

// Проверяем, является ли значение vk_firstName пустотой
if (string.IsNullOrEmpty(vk_firstName))
{
    // Если vk_firstName пустота, заменяем его на "empty"
    vk_firstName = "empty";
}

// Записываем значение vk_firstName в переменную
project.Variables["vk_firstName"].Value = vk_firstName;

//================================================//


// Очищаем переменную
project.Variables["vk_lastName"].Value = "";

// Получаем значение vk_lastName и преобразуем его в строку
var vk_lastName = project.Json.response.last_name.ToString();

// Проверяем, является ли значение vk_lastName пустотой
if (string.IsNullOrEmpty(vk_lastName))
{
    // Если vk_lastName пустота, заменяем его на "empty"
    vk_lastName = "empty";
}

// Записываем значение vk_lastName в переменную
project.Variables["vk_lastName"].Value = vk_lastName;

//================================================//


// Очищаем переменную
project.Variables["vk_sex"].Value = "";

// Получаем значение vk_sex и преобразуем его в строку
var vk_sex = project.Json.response.sex.ToString();

// Проверяем, является ли значение vk_sex пустотой
if (string.IsNullOrEmpty(vk_sex))
{
    // Если vk_sex пустота, заменяем его на "empty"
    vk_sex = "empty";
}

// Записываем значение vk_sex в переменную
project.Variables["vk_sex"].Value = vk_sex;

//================================================//


// Очищаем переменную
project.Variables["vk_countryId"].Value = "";

// Получаем значение vk_countryId и преобразуем его в строку
var vk_countryId = project.Json.response.country.id.ToString();

// Проверяем, является ли значение vk_countryId пустотой
if (string.IsNullOrEmpty(vk_countryId))
{
    // Если vk_countryId пустота, заменяем его на "empty"
    vk_countryId = "empty";
}

// Записываем значение vk_countryId в переменную
project.Variables["vk_countryId"].Value = vk_countryId;

//================================================//


// Очищаем переменную
project.Variables["vk_countryTitle"].Value = "";

// Получаем значение vk_countryTitle и преобразуем его в строку
var vk_countryTitle = project.Json.response.country.title.ToString();

// Проверяем, является ли значение vk_countryTitle пустотой
if (string.IsNullOrEmpty(vk_countryTitle))
{
    // Если vk_countryTitle пустота, заменяем его на "empty"
    vk_countryTitle = "empty";
}

// Записываем значение vk_countryTitle в переменную
project.Variables["vk_countryTitle"].Value = vk_countryTitle;

//================================================//



// Очищаем переменную
project.Variables["vk_cityId"].Value = "";

// Получаем значение vk_cityId и преобразуем его в строку
var vk_cityId = project.Json.response.city.id.ToString();

// Проверяем, является ли значение vk_cityId пустотой
if (string.IsNullOrEmpty(vk_cityId))
{
    // Если vk_cityId пустота, заменяем его на "empty"
    vk_cityId = "empty";
}

// Записываем значение vk_cityId в переменную
project.Variables["vk_cityId"].Value = vk_cityId;

//================================================//


// Очищаем переменную
project.Variables["vk_cityTitle"].Value = "";

// Получаем значение vk_cityTitle и преобразуем его в строку
var vk_cityTitle = project.Json.response.city.title.ToString();

// Проверяем, является ли значение vk_cityTitle пустотой
if (string.IsNullOrEmpty(vk_cityTitle))
{
    // Если vk_cityTitle пустота, заменяем его на "empty"
    vk_cityTitle = "empty";
}

// Записываем значение vk_cityTitle в переменную
project.Variables["vk_cityTitle"].Value = vk_cityTitle;

//================================================//


// Очищаем переменную
project.Variables["vk_verificationStatus"].Value = "";

// Получаем значение vk_verificationStatus и преобразуем его в строку
var vk_verificationStatus = project.Json.response.verification_status.ToString();

// Проверяем, является ли значение vk_verificationStatus пустотой
if (string.IsNullOrEmpty(vk_verificationStatus))
{
    // Если vk_verificationStatus пустота, заменяем его на "empty"
    vk_verificationStatus = "empty";
}

// Записываем значение vk_verificationStatus в переменную
project.Variables["vk_verificationStatus"].Value = vk_verificationStatus;

//================================================//


// Очищаем переменную
project.Variables["vk_relation"].Value = "";

// Получаем значение vk_relation и преобразуем его в строку
var vk_relation = project.Json.response.relation.ToString();

// Проверяем, является ли значение vk_relation пустотой
if (string.IsNullOrEmpty(vk_relation))
{
    // Если vk_relation пустота, заменяем его на "empty"
    vk_relation = "empty";
}

// Записываем значение vk_relation в переменную
project.Variables["vk_relation"].Value = vk_relation;

//================================================//



и так для всех нужных мне значений. Не знаю как написать элегантнее, поэтому для каждой переменной свой снипет друг за другом в одном экшене c#

Всё работало до вчерашнего момента. оказываеться что у некоторых пользователей не заполнена информация например страна и из за этого её нет в АПИ, и когда происходит обработка этого места постер ругаеться что в JSON нет такого обьекта(точно не запомнил текст) и проект вылетает в ошибку.

Как можно исправить этот c# код чтобы если в JSON нет такой переменной чтобы писал в обычную переменную слово empty ?
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
1 184
Благодарностей
823
Баллы
113
Как вариант обернуть обработку json в try/catch
 
  • Спасибо
Реакции: zerosearcher

zerosearcher

Client
Регистрация
17.09.2022
Сообщения
15
Благодарностей
2
Баллы
3

zerosearcher

Client
Регистрация
17.09.2022
Сообщения
15
Благодарностей
2
Баллы
3
бинг подсказал вот так написать, чутка изменил, вроде работает

C#:
// Обьявлляем и Очищаем переменные
project.Variables["www"].Value = "";
var myvar = "";

// Пытаемся получить значение myvar из json
try
{
    // Получаем значение myvar и преобразуем его в строку
    myvar = project.Json.response.zzz.ToString();
}
catch (Exception e)
{
    // Если возникло исключение, значит в json нет такого поля
    // Заменяем myvar на "empty"
    myvar = "empty";
}

// Проверяем, является ли значение myvar пустотой
if (string.IsNullOrEmpty(myvar))
{
    // Если myvar пустота, заменяем его на "empty"
    myvar = "empty";
}

// Записываем значение myvar в переменную
project.Variables["www"].Value = myvar;

//================================================//
 
Последнее редактирование:

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 128
Благодарностей
486
Баллы
83
Можно работать с DTO и явно там прописывать те или иные объекты.
 

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