Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 18.04.2019, 12:57   #11
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,139
Репутация: 3501

icq: 512-765
skype: alexp.frl
По умолчанию

Тут все написано в правильном порядке.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Достаньте строку из token и парсите (убрав экранирующие символы если остались)
Alex11223 на форуме   Ответить с цитированием
Старый 18.04.2019, 13:13   #12
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 537
Репутация: 101
По умолчанию

попробовал указать строку явно:
Код:

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, 13:17   #13
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,139
Репутация: 3501

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
но не вижу отличий от того, что программа принимает в ответе сервера
она же не только этот кусок принимает.
Цитата:
Сообщение от BLACK_RAIN Посмотреть сообщение
экранирующие это какие?
\
Alex11223 на форуме   Ответить с цитированием
Старый 18.04.2019, 13:47   #14
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 537
Репутация: 101
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

валидный 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}

Alex11223 на форуме   Ответить с цитированием
Старый 18.04.2019, 15:01   #16
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 537
Репутация: 101
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

Причем тут рандом, просто смотрите валидный ли JSON передается парсеру в каждом случае.
Alex11223 на форуме   Ответить с цитированием
Старый 22.04.2019, 16:26   #18
BLACK_RAIN
Участник клуба
 
Регистрация: 13.02.2012
Сообщений: 537
Репутация: 101
По умолчанию

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

icq: 512-765
skype: alexp.frl
По умолчанию

Скорее всего вы только думаете, что то же самое, а на самом деле код другой.
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


08:50.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru