Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2019, 11:57   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Тут все написано в правильном порядке.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Достаньте строку из token и парсите (убрав экранирующие символы если остались)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2019, 12:13   #12
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

попробовал указать строку явно:
Код:
procedure Parse;
var
  s : string;
  j : TJSONObject;
begin
  s := '{"authorization":{"forbidden":false,"reason":""},"chansub":{"restricted_bitrates":'+
       '["160p30","360p30","480p30","720p60","audio_only","chunked"]},"device_id":null,'+
       '"expires":1555647360,"https_required":false,"privileged":false,"user_id":null,'+
       '"version":2,"vod_id":411950229}';
  j := TJSONObject.ParseJSONValue(s) as TJSONObject;
  ShowMessage(j.Get('authorization').ToJSON);
end;
Работает!
но не вижу отличий от того, что программа принимает в ответе сервера:
Код:
{"authorization":{"forbidden":false,"reason":""},"chansub":{"restricted_bitrates":["160p30","360p30","480p30","720p60","audio_only","chunked"]},"device_id":null,"expires":1555642412,"https_required":false,"privileged":false,"user_id":null,"version":2,"vod_id":411950229}"
я эту строчку в код вставил.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
(убрав экранирующие символы если остались).
экранирующие это какие?
BLACK_RAIN вне форума Ответить с цитированием
Старый 18.04.2019, 12:17   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
но не вижу отличий от того, что программа принимает в ответе сервера
она же не только этот кусок принимает.
Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
экранирующие это какие?
\
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2019, 12:47   #14
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
она же не только этот кусок принимает.
всмысле "этот кусок"? Какой кусок? Она же весь JSON принимает, а потом я из него достаю token (c вырезанием \). Если делать это программно, то токен не парсится. А если забить токен вручную - тогда всё работает.
Теперь я понял, что проблема в этом. Но почему?
В дебаггере видно, что полученная от сервера строка (после вырезания \) ничем не отличается от той, что я вставляю вручную (кстати ее же я и вставляю). Программно копирую строку, которая не парсится, в буфер обмена. Вставляю ее в код - она начинает парситься.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
\
ну я их и вырезаю, а толку?
BLACK_RAIN вне форума Ответить с цитированием
Старый 18.04.2019, 12:55   #15
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

валидный JSON:
Код:
{
    "token": "{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"chansub\":{\"restricted_bitrates\":[\"160p30\",\"360p30\",\"480p30\",\"720p30\",\"720p60\",\"audio_only\",\"chunked\"]},\"device_id\":\"f5c750dc6abb384c\",\"expires\":1555483246,\"https_required\":false,\"privileged\":false,\"user_id\":null,\"version\":2,\"vod_id\":410955948}",
    "sig": "ae729bcb291b60e386dcf8b4d665b360a98111a7",
    "expires_at": "2019-04-17T06:40:46Z"
}
не валидный JSON:
Код:
{
    "token": "{"authorization":{"forbidden":false,"reason":""},"chansub":{"restricted_bitrates":["160p30","360p30","480p30","720p30","720p60","audio_only","chunked"]},"device_id":"f5c750dc6abb384c","expires":1555483246,"https_required":false,"privileged":false,"user_id":null,"version":2,"vod_id":410955948}",
    "sig": "ae729bcb291b60e386dcf8b4d665b360a98111a7",
    "expires_at": "2019-04-17T06:40:46Z"
}
валидный JSON:
Код:
{"authorization":{"forbidden":false,"reason":""},"chansub":{"restricted_bitrates":["160p30","360p30","480p30","720p30","720p60","audio_only","chunked"]},"device_id":"f5c750dc6abb384c","expires":1555483246,"https_required":false,"privileged":false,"user_id":null,"version":2,"vod_id":410955948}
не валидный JSON:
Код:
{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"chansub\":{\"restricted_bitrates\":[\"160p30\",\"360p30\",\"480p30\",\"720p30\",\"720p60\",\"audio_only\",\"chunked\"]},\"device_id\":\"f5c750dc6abb384c\",\"expires\":1555483246,\"https_required\":false,\"privileged\":false,\"user_id\":null,\"version\":2,\"vod_id\":410955948}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 18.04.2019, 14:01   #16
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Ничего не понимаю. Сейчас всё заработало. Даже без вырезания слэшей. Хотя еще пару часов назад оно совсем не парсилось если не вырезать слэш с кавычками.
возможно, в делфи есть какой-то рандомайзер, который решает, работать коду или нет (не рофл).
BLACK_RAIN вне форума Ответить с цитированием
Старый 18.04.2019, 14:50   #17
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут рандом, просто смотрите валидный ли JSON передается парсеру в каждом случае.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.04.2019, 15:26   #18
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Причем тут рандом, просто смотрите валидный ли JSON передается парсеру в каждом случае.
А при том.
До создания этой темы, я в коде делал то же самое, что делаю сейчас. Раньше оно не работало (с вырезанием символов и без), а теперь работает (даже если не изменять полученный JSON).
BLACK_RAIN вне форума Ответить с цитированием
Старый 22.04.2019, 20:14   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Скорее всего вы только думаете, что то же самое, а на самом деле код другой.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с JSON (System.JSON) nibufep Общие вопросы Delphi 3 19.04.2016 18:21
JSON Exception [org.apache.json] spectrum988 Помощь студентам 3 11.12.2015 09:25
Проблема с парсингом ссылок, парсится одна и та же ссылка! FleXik Общие вопросы Delphi 15 02.11.2012 20:52
Криво парсится текст INSectoID Общие вопросы Delphi 5 14.07.2011 20:55