Json形式のテキスト出力時に値をUnicode文字列に変換しないといけないのですが、
サンプルロジックを実行すると「\」が以下のようにエスケープされてしまいます。
【サンプルの結果】{"text":"\\u30C6\\u30B9\\u30C8"}
TJsonObjectでは、以下のように「\」のエスケープを無効化して出力する方法はないのでしょうか?
【希望する結果】{"text":"\u30C6\u30B9\u30C8"}
こちらに同じ質問されている人がおられましたが、回答内容がJSONデータの整形のサンプルのようでしたので、参考になりませんでした。
https://qiita.com/TJiJi/questions/449a71f159433d18a68f
■サンプル
procedure TForm1.Button1Click(Sender: TObject);
var
LJson: TJSONObject;
LUnicodeString: UnicodeString;
s: string;
I: integer;
begin
LJson := TJSONObject.Create;
try
LUnicodeString := 'テスト';
for I := 1 to length(LUnicodeString) do begin
s := s + '\u' + IntToHex(ord(LUnicodeString[I]));
end;
LJson.AddPair('text', s);
memo1.Lines.Clear;
memo1.Lines.Add(LJson.ToString);
finally
LJson.Free;
end;
end;
S := 'テスト';
LJson.AddPair('text', s);
Memo1.Lines.Add(LJson.ToString); //{"text":"テスト"}
Memo1.Lines.Add(LJson.ToJSON); //{"text":"\u30C6\u30B9\u30C8"}
テストは日本語じゃないのか
AAAAAさん
ToStringとToJSONの違いを全く理解しておりませんでした。
教えていただいたシンプルなロジックでうまくいきました。
大変ありがとうございました。
ツイート | ![]() |