こんにちは。
TJson.format 関数が、勝手に改行とインデントを入れた文字列を返すので、QCに入れました。
QCに入れるのが初めてなので、あれで伝わるのか心配です。
procedure JsonFormatTest; var jo:TJsonObject; j:TJson; begin jo := TJsonObject.Create; jo.AddPair('a', 'x="a,b"');
j := TJson.Create; ShowMessage( j.Format(jo) ); end;
JSON オブジェクトに、名前が a、値が x="a,b" というペアを作って、
TJson.Format 関数に渡すと、値のコンマの後ろで勝手に改行と次の行の頭にインデントが入ってしまいます。
値の中のダブルクォーテーションのエスケープが無視されてしまっているようです。
{ "a":"x=\"a, b\"" }
↑こんな風な出力になる。
こんな↓風になるのが正解と思う。
{ "a":"x=\"a,b\"" }
RESTを使ってサーバーとデータセットのやり取りをする処理を書いていて、
その中の BLOB (sub type text)フィールドに、XMLの文字列を入れていたら、勝手に中身が変わってました ((+_+))
TJson.Format 関数の中の最後の処理(A)を if の後ろに移動するだけで良いのかなと思っています。
isEscape := (c = '\') and not isEscape; // <- (A) if not isEscape and (c = '"') then isInString := not isInString; // (A) をここに移動
|