[Решено] JSON + "\n"

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

[Решено] JSON + "\n"

Сообщение GAMER »

Столкнулся с проблемой следующего типа.
Есть строка json c параметрами:
{"event":"message","message":{"text":"123\n567","type":"text"},"silent":false}
при парсинге

Код: Выделить всё

  
     R:=J.FindPath('message.text');
      if R=nil then
      begin
       J.Free;
       exit;
      end;
      Text:=R.AsString;

Я уже получаю значение в переменной Text как "123#10567"
можно ли как-то получить оригинальное значение из двумя символами "\n"?
Если нет, то буду писать свою обработку.
Последний раз редактировалось GAMER 11.07.2019 09:44:00, всего редактировалось 1 раз.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

А кто пакует json строку? и чем смотрите..
char(#10) это есть '\n'
так что все верно.. и никто не заменяет символ перевода строки #10 тремя '#10'
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Строку получаю по вебу. В дебагере смотрю - вижу в строке \n.
После того, как витянул значение и просвоил его другой переменной в дебагере в этой переменной уже вижу #10.

Проблема в том, что json нормально отправит строку '123\n456', но не отправит строку '123#10456'
fedan
новенький
Сообщения: 70
Зарегистрирован: 15.09.2016 20:18:48

Сообщение fedan »

а что получится, если строку '123#10456' обратно в json перегнать?
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

так и уходит, с нулем. А потом другая сторона не может распарсить, так как там конец строки, а не символ.
fedan
новенький
Сообщения: 70
Зарегистрирован: 15.09.2016 20:18:48

Сообщение fedan »

Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Та да, пока так и сделал (только старым способом, без этой функции)

Добавлено спустя 38 минут 44 секунды:
fedan писал(а):ну, тогда https://www.freepascal.org/docs-html/rt ... place.html

Cтранно, но с этими символами не сработало. Еще перепроверю саму функцию.
Не, все сработало.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

#10 обязан эскейпиться в строках при построении JSON'а.

В fcl-json я вижу функцию StringToJSONString, которая похоже на то, что вам нужно.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Да, эту функцию я искал. Спасибо.
Ответить