Ошибка разделения строки из-за нежелательного разделителя - PullRequest
0 голосов
/ 02 мая 2018

Это строка, которую мне нужно разделить для добавления в карту в качестве пары ключ-вал:

"jti":"4ef61081-e2e0-40e4-a9ad-8f2bf33f8923","exp":1525357546,"nbf":0,"iat":1525271146,"iss":"https://dev.open-sunbird.org/auth/realms/sunbird","aud":"admin-cli"

Я пытался с

String[] parts = body.split(":|,");

Проблема с этим подходом - ссылка ":" в https. Смотрите вывод следующим образом

--"jti"--"4ef61081-e2e0-40e4-a9ad-8f2bf33f8923"
--"exp"--1525357546
--"nbf"--0
--"iat"--1525271146
--"iss"--"https
--//dev.open-sunbird.org/auth/realms/sunbird"--"aud"

Будем благодарны за любые сведения о точном регулярном выражении для решения проблемы. (Вдобавок ко мне, если мы можем проверить, что каждое сплит-слово либо начинается и заканчивается «или не начинается и не заканчивается». Но я чувствую, что это наивный подход. Даже если мы можем это сделать.)

1 Ответ

0 голосов
/ 02 мая 2018

Не нужно увлекаться регулярным выражением. Есть пара вариантов.

  1. Это явно утверждения / атрибуты на токене JWT. Используйте библиотеку для анализа JWT, вместо того, чтобы анализировать строку таким образом.
  2. Просто разделите сначала запятыми, а затем ПЕРВЫМ двоеточием. Должен дать вам то, что вы хотите, не пытаясь уважать положение кавычек.
  3. Это JSON, так что используйте анализатор JSON.
...