Обработка ошибки в регулярном выражении

f0x

Client
Регистрация
07.02.2014
Сообщения
54
Благодарностей
6
Баллы
8
Привет.

Подскажите пожалуйста по регулярке.

Есть json ответ с данными (пер. POSTLoginClean), вида
----
[{"code":200,"body":"{"session_key":"5.hTSOh01KQwakFg.1494876545.2-100009026293730","uid":1000090262930,
-----

и сниппет для обработки

Код:
string POSTLogin = project.Variables["POSTLoginClean"].Value;

var session_key = new System.Text.RegularExpressions.Regex(@"(?<=session_key"":).*?(?=,)", System.Text.RegularExpressions.RegexOptions.None).Matches(POSTLogin)[0];

var apiUid = new System.Text.RegularExpressions.Regex(@"(?<=uid"":).*?(?=,)", System.Text.RegularExpressions.RegexOptions.None).Matches(POSTLogin)[0];

Проблема в том, что если в POSTLoginClean нет session_key, то код выполняется с ошибкой.
Как можно сделать обработку таких ошибок, чтобы если нет session_key то, var session_key была просто пустой ?

Спасибо!
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
C#:
string POSTLogin = project.Variables["POSTLoginClean"].Value;

var apiUid = new System.Text.RegularExpressions.Regex(@"(?<=uid"":).*?(?=,)", System.Text.RegularExpressions.RegexOptions.None).Matches(POSTLogin)[0];

if((new System.Text.RegularExpressions.Regex(@"(?<=session_key"":).*?(?=,)", System.Text.RegularExpressions.RegexOptions.None).Matches(POSTLogin)).Count > 0)
var session_key = new System.Text.RegularExpressions.Regex(@"(?<=session_key"":).*?(?=,)", System.Text.RegularExpressions.RegexOptions.None).Matches(POSTLogin)[0];
 
Последнее редактирование:
  • Спасибо
Реакции: f0x

f0x

Client
Регистрация
07.02.2014
Сообщения
54
Благодарностей
6
Баллы
8
Nick, спасибо.

Тут у меня еще проблема в том, что ответ json может быть немного в другом формате, например с пробелами
"{" session_key " : "5.hTSOh01KQwakFg.1494876545.2-100009026293730",

и тогда ведь условие (POSTLogin.Contains("session_key")) отработает но все равно ошибка будет, верно?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
да... может быть, ты об остальных сюрпризах тоже сразу напишешь?
 

f0x

Client
Регистрация
07.02.2014
Сообщения
54
Благодарностей
6
Баллы
8
Сюрпризов нет больше.
Реально ли без условий вернуть без ошибки
Код:
var apiUid = new System.Text.RegularExpressions.Regex(@"(?<=uid"":).*?(?=,)", System.Text.RegularExpressions.RegexOptions.None).Matches(POSTLogin)[0];
?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
смотри исправленный вариант. он немного некрасивый, но я не хочу лезть в редактор и там красивее писать
 
  • Спасибо
Реакции: f0x

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