質問
RESTコネクターGET実行処理で取得したデータに「エスケープ済みのデータ」と「未エスケープのデータ」が混在している場合、HULFT Square側でエスケープ済みかどうかを判別する方法、および二重エスケープを回避する方法はありますか?
回答
■ エスケープ済みデータの判別方法
以下の手順で、エスケープ済みデータかどうかを判別し、未エスケープデータのみにエスケープ処理を実施することが想定されます。
1. 真偽値型のスクリプト変数を作成する
2. 既存のエスケープ処理前に [変数代入処理] を配置する
3. Mapperエディターで [正規表現にマッチ] ロジックを配置し、データに合わせた正規表現パターンを入力後、手順1で作成したスクリプト変数に結果を格納する(例:エスケープ対象文字が「"」なら「.\\".」など)
4. [条件分岐処理] を配置し、手順1で作成したスクリプト変数の値がfalse(未エスケープ)の場合はエスケープ処理を実施する
なお、正規表現パターンなどはデータ仕様に合わせて変更する必要があります。
■ 二重エスケープを回避する方法(アンエスケープ後に一律エスケープ)
条件分岐でエスケープ処理をすり抜けるケースへの対処として、以下の順で処理することで二重エスケープの問題を回避できます。
1. アンエスケープ処理:[正規表現置換] ロジックまたは [文字列ごとに置換] ロジックを使用し、入力データに対して一律で \" → " 等に置換する
2. エスケープ処理:同様のロジックを使用し、一律で " → \" 等にエスケープ処理を実施する
補足
・[文字列ごとに置換] ロジックでは、入力文字列に複数の変換対象がある場合、先頭の値のみが置換処理に使用されます
・[正規表現置換] ロジックの置換後文字列では、バックスラッシュ(\\)やドル記号($)は特殊文字として扱われるため、そのまま出力する場合はバックスラッシュでエスケープする必要があります
・JSONデータ送信時は、ダブルクォーテーション以外にも一般的にエスケープが必要な文字(\\b、\\f 等)についても同様に文字置換が必要です
・変数代入
・条件分岐
コメント
0件のコメント
記事コメントは受け付けていません。