powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
14 сообщений из 14, страница 1 из 1
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906616
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такой ответ от сервера (где word press наколдовал:)) в виде json:
"{"code":99003,"message":"Заказ, который вы хотите добавить, уже есть в базе данных","data":{}}"

Чем конвертнуть вот эти вот все "Зак\......" в кириллический текст, коим он должен быть для пользователя в итоге?
Ситуация немного осложняется тем, что допиливаю проект древний, еще на D7 :((
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906617
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function Convert(const InText: string): string;
var
  i, op: Integer;
  c: Char;
  t, n: string;
begin
  i := 1;
  op := 1;
  while PosEx('\u', InText, i) <> 0 do
  begin
    i := PosEx('\u', InText, i);
    t := t + Copy(InText, op, i - op);
    Inc(i, 2);
    n := Copy(InText, i, 4);
    op := i + 4;
    c := Char(StrToInt('$' + n));
    t := t + WideString(c);
  end;
  t := t + Copy(InText, op, Length(InText));
  Result := t;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := Convert('abc абвг');
end;
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906618
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас же HCL есть, достаточно htxml подключить

var XN: THtXMLNode;
begin
XN := THtXMLNode.CreatefromJSON(s);
ShowMessage(XN['message']);
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906621
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Softologic,

Очень просто, грузишь его в суперобджект, и сохраняешь методом .asJSON с параметрами true, false. Две строки кода.
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906643
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asviridenkov,

Спасибо! Попробую.
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906644
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function Convert(const InText: string): string;
var
  i, op: Integer;
  c: Char;
  t, n: string;
begin
  i := 1;
  op := 1;
  while PosEx('\u', InText, i) <> 0 do
  begin
    i := PosEx('\u', InText, i);
    t := t + Copy(InText, op, i - op);
    Inc(i, 2);
    n := Copy(InText, i, 4);
    op := i + 4;
    c := Char(StrToInt('$' + n));
    t := t + WideString(c);
  end;
  t := t + Copy(InText, op, Length(InText));
  Result := t;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := Convert('abc абвг');
end;



Спасибо!
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906645
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asviridenkov
У вас же HCL есть, достаточно htxml подключить

var XN: THtXMLNode;
begin
XN := THtXMLNode.CreatefromJSON(s);
ShowMessage(XN['message']);


Александр, ваш код возвращает вот такую штуку: "0:07, :>B>@K9 2K E>B8B5 4>1028BL, C65 5ABL 2 1075 40==KE"
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906647
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat,

ваш код возвращает тоже самое: "0:07, :>B>@K9 2K E>B8B5 4>1028BL, C65 5ABL 2 1075 40==KE".
Что то не очень похоже на utf8, и любые попытки перевести из utf8 в ansi ничего не дали... что я делаю не так?
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906654
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Softologic,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
uses superobject,...;
...
var
  fSrc : WideString;
  fSO : ISuperObject;
  fResult : AnsiString;
...
begin
  fSrc := ...;
  fSO := SO(fSrc);
  fResult := fSO.AsJSON(true, false);
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906655
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function Convert(const InText: string): string;
var
  i, op: Integer;
  c: Char;
  t, n: string;
begin
  i := 1;
  op := 1;
  while PosEx('\u', InText, i) <> 0 do
  begin
    i := PosEx('\u', InText, i);
    t := t + Copy(InText, op, i - op);
    Inc(i, 2);
    n := Copy(InText, i, 4);
    op := i + 4;
    c := Char(StrToInt('$' + n));
    t := t + WideString(c);
  end;
  t := t + Copy(InText, op, Length(InText));
  Result := t;
end;



Немного подправил код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function Convert( const InText : string ) : string;
var
  i : integer;
  c : WideChar;
  n : string;
begin
  Result := InText;
  i := Pos( '\u', Result );
  while i > 0 do
  begin
    n := Copy( Result, i + 2, 4 );
    c := WideChar( StrToInt( '$' + n ) );
    Result := StringReplace( Result, '\u' + n, c, [rfReplaceAll, rfIgnoreCase] );
    i := Pos( '\u', Result );
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := Convert('abc абвг def');
end;



В данном варианте результат ' abc абвг def ' (проверял на D5).

Вся исходная строка преобразовалась в:
Код: pascal
1.
'{"code":99003,"message":"Заказ, который вы хотите добавить, уже есть в базе данных","data":{}}'
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906666
Softologic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Polesov,

Да, все получилось! Благодарю!

ёёёёё,

superobjects никогда не использовал. Говорят, штука хорошая)
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906679
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Softologic
Есть такой ответ от сервера (где word press наколдовал:)) в виде json:
"{"code":99003,"message":"Заказ, который вы хотите добавить, уже есть в базе данных","data":{}}"

Чем конвертнуть вот эти вот все "Зак\......" в кириллический текст, коим он должен быть для пользователя в итоге?
Ситуация немного осложняется тем, что допиливаю проект древний, еще на D7 :((
У fundamentals есть библиотека для работы с json, бесплатная с исходниками.
Просто открыть это в ней, и всё.
Работает и на более низких версиях дельфей.
Сам пользуюсь с некоторых времен.
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906683
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

не советую. Мало того, что она неудобная. По сравнению с суперобджект.
Она еще и глючная.
Например, она на входе и выходе должна уметь принимать и выдавать даблфлоат числа в формате javascript, т.е., в частности, десимал сепаратор должен быть точкой. А в фундаменталс тупо используется StrToFloat и FloatToStr с текущей локалью, т.обр., 123.45 на компе с русской локалью не взлетит, ибо в русской локали используется запятая.
Там и ещё тараканы есть, но и этого достаточно. Легко правится, да, но все равно библиотека с неудобным синтаксисом.
...
Рейтинг: 0 / 0
Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
    #39906702
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё
А в фундаменталс тупо используется StrToFloat и FloatToStr с текущей локалью, т.обр., 123.45 на компе с русской локалью не взлетит, ибо в русской локали используется запятая.
Да, это я сразу там почикал, после того как скачал.

Больше вроде ничё не правил.


ёёёёё
все равно библиотека с неудобным синтаксисом.
Возможно. Особенно если часто работать с джейсонами, но это не мой случай.
И как я понял из вопроса ТС - у него задача одноразовая, а для такой сойдет.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чем конвертнуть raw_unicode-текст в json на Delphi 7 ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]