Skip to content
JSONエスケープ / アンエスケープ
Tools

JSONエスケープ / アンエスケープ

新着

生のテキストをJSONで安全な文字列にエスケープし、元に戻す。

Options
0 input chars 0 output chars 0 output bytes

Runs entirely in your browser. Nothing is uploaded.

JSONエスケープ・アンエスケープ — 無料・プライベート・即座

このJSONエスケープツールは、あらゆるテキストをJSONセーフな文字列に変換し、エスケープされた文字列をプレーンテキストに戻します。両方向の変換を一か所で、即座に、完全にブラウザ内で実行します。コンテンツを貼り付け、エスケープまたはアンエスケープを選択し、結果をコピーするだけです。インストール不要、サインアップ不要。すべての変換がローカルで実行されるため、データがデバイスから外に出ることは一切ありません。APIペイロード、アクセストークン、パスワード、その他サーバーにアップロードしたくない機密テキストに安全です。

APIペイロード用のJSON文字列エスケープ、設定ファイルへの複数行スニペットの挿入、またはログで見つけたエスケープ済み値から元のテキストを復元するための最速の方法です。変換はブラウザのネイティブJSONエンジンを使用しており、手作りの正規表現ではないため、出力はJavaScriptのJSON.stringifyが生成するものと一致し、Python、Go、Java、Rubyの仕様準拠パーサーが期待するものと同じです。

JSONでエスケープが必要なもの — 不要なもの

JSON文字列内で特別な意味を持つ文字はごくわずかです。ダブルクォート"\"に、バックスラッシュ\\\に、ホワイトスペース制御文字は\b\f\n\r\tになります。U+0020未満のその他の制御文字は\uXXXXエスケープとして記述します。それ以外のすべて — 文字、数字、シングルクォート、ハイフン、通常の句読点 — はそのまま通過します。よくある誤解として、JSONではシングルクォートのエスケープは不要です。JSON文字列はダブルクォートを区切り文字として使用し、シングルクォートは使用しないためです。

これらのいずれかを間違えることがJSONのパース失敗の原因です。エスケープされていないダブルクォートは文字列を早期に終了させ、"Unexpected token"エラーが発生します。単独のバックスラッシュはエスケープシーケンスの開始として読み取られ、次の文字が有効なエスケープ文字でなければパースが失敗します。文字列内のリテラル改行はJSON仕様で許可されていません。問題のある値をエスケープモードに貼り付けると、1秒未満で正しくエスケープされたバージョンが返されます。

エスケープ・アンエスケープ・stringify — 各モードの役割

エスケープモードはテキストをエンコードして、JSON文字列の中に収まるようにします。デフォルトではエスケープされたコンテンツのみが返され、自分のクォートの間に貼り付ける準備ができています。クォートで囲むをオンにすると、クォート付きの完全なJSON文字列値が得られます — JSON.stringify()が生成するものとまったく同じです。これがエスケープ(特殊文字をエンコード)とstringify(エンコードしてクォートで囲む)の違いです。どちらの出力も標準的なJSONパーサーが受け付けます。

アンエスケープモードは逆の処理を行い、\"\\\n\t\uXXXXをそれが表す文字に戻します。周囲のクォートの有無にかかわらず入力を受け付け、不正なエスケープシーケンスについては明確なエラーを報告します。スワップボタンをクリックすると出力が反対のモードの入力に戻るため、往復は1クリックです — 何かをエスケープし、出力を確認し、スワップして元に戻ることを確認できます。

Unicode・バックスラッシュ・Windowsパス・HTMLセーフ出力

JSONはデフォルトでUnicodeを生のUTF-8として保存しますが、純粋なASCIIが必要な場合もあります。非ASCII文字をエスケープ (\uXXXX)をオンにすると、アクセント付き文字や絵文字はすべて\uXXXXシーケンスになります — é\u00e9に、😀はサロゲートペア\ud83d\ude00になります。これにより、古いパーサーやASCII専用の設定ファイルがデータ損失なく正しく動作します。

Windowsファイルパスと正規表現パターンの場合、バックスラッシュの二重化は自動的に行われます。C:\Users\meを貼り付けると、ツールはC:\\Users\\meを出力します。HTML埋め込みの場合、スラッシュをエスケープオプションで/\/に書き換えると、文字列値内の閉じるscriptタグが周囲のHTMLから外に出られなくなります — まったく同じようにパースできる有効なJSONのままですが、サーバーレンダリングページへのインライン埋め込みが安全になります。

JSONLint・jsonformatter.org・VS Code・サーバーサイドツールとの比較

JSONLintはJSONドキュメント全体が整形式かどうかを検証します。jsonformatter.orgは読みやすさのためにJSONをフォーマットします。VS Codeの組み込みフォーマッターはインデントと構文ハイライトを処理しますが、個々の文字列値のエスケープやアンエスケープは行いません。これらのどれも、このツールがカバーするギャップ(特殊文字を含む単一の文字列を修正すること)を埋めるものではありません。フォーマットにはjsonformatter.org、検証にはJSONLint、完全なファイルの編集にはVS Code、パーサーを壊す文字列値の修正にはこのツールを使用してください。

サーバーサイドのJSONエスケープツールも存在しますが、トレードオフがあります — テキストがデバイスから外に出ます。APIキー、パスワード、プライベート設定、ユーザーデータを扱っている場合、それを外部サーバーに送ることは不必要なリスクです。このツールはすべてをクライアントサイドで処理します — 何もアップロードされず、ログに記録されず、保存されません。読み込まれたらオフラインで動作するので、ネットワーク接続なしで使用できます。アカウント作成不要、レート制限なし、ファイルサイズ上限なし。

Frequently asked questions

JSONエスケープとは何ですか?

JSONエスケープは、JSON文字列を壊してしまう文字をバックスラッシュのエスケープシーケンスに置き換え、テキストをJSON値の中に安全に置けるようにします。例えば、テキスト「彼は"こんにちは"と言った」は、ダブルクォートがエスケープされると「彼は\"こんにちは\"と言った」になります。エスケープはテキストの意味を変えることはなく、JSONが予約している文字をエンコードするだけです。

JSONのために文字列をエスケープするには?

エスケープモードを選択した状態で入力ボックスにテキストを貼り付けると、JSONセーフバージョンが出力パネルに即座に表示されます — その後コピーをクリックします。ツールはダブルクォート、バックスラッシュ、改行、タブ、制御文字を自動的にエスケープします。エスケープされたコンテンツだけでなく完全なJSON文字列値が必要な場合は「クォートで囲む」をオンにしてください。APIコールなし、サーバーへの往復なし — 変換はブラウザのネイティブJavaScript JSONエンジンで動作します。

JSONでエスケープが必要な文字は何ですか?

JSON文字列内では、ダブルクォート " を \"、バックスラッシュ \ を \\、そしてホワイトスペース制御文字: バックスペース \b、フォームフィード \f、改行 \n、キャリッジリターン \r、タブ \t をエスケープする必要があります。U+0000–U+001Fの範囲内の他の制御文字は \uXXXX として記述する必要があります。スラッシュ / はオプションで \/ にエスケープできますが、必須ではありません。

JSON文字列をアンエスケープするには?

アンエスケープモードに切り替えて、エスケープされた文字列(周囲のクォートの有無にかかわらず)を貼り付けます。ツールは各エスケープシーケンスをそれが表す文字に戻すので、1行目\n2行目は2つの実際の行になり、\u00e9はéになります。2つのモード間を切り替えるにはスワップボタンを使用してください。ログファイルやAPIレスポンスからエスケープされた文字列をコピーして元のテキストを読みたいときに便利です。

JSONでシングルクォートはエスケープが必要ですか?

必要ありません。JSON文字列は常にダブルクォートで区切られるため、シングルクォート(アポストロフィ)は普通の文字に過ぎません。ダブルクォート " とバックスラッシュ \ (および制御文字)だけがエスケープを必要とします。これはPythonやシェルスクリプトなどの言語から来た開発者にとってよくある混乱の点です。それらの言語ではシングルクォートとダブルクォートが交換可能に使えるためです。

JSONをオンラインでエスケープするのは安全ですか?

はい。このツールは100%クライアントサイドです — すべてのエスケープとアンエスケープはブラウザ内でJavaScriptを使って行われ、貼り付けた内容がアップロード、ログ記録、またはサーバーに送信されることは一切ありません。これにより、APIペイロード、トークン、設定、その他の機密テキストに対して安全です。タブを閉じると、使用した記録は一切残りません。

エスケープとstringifyの違いは何ですか?

エスケープはテキスト内の特殊文字をエンコードします。stringifyはそれに加えて結果をダブルクォートで囲み、完全なJSON文字列値を生成します。テキスト「彼女は"こんにちは"と言った」の場合: エスケープはコンテンツ「彼女は\"こんにちは\"と言った」を返し、stringifyは完全な値「"彼女は\"こんにちは\"と言った"」を返します。「クォートで囲む」トグルが両者を切り替えます — オフはコンテンツのみ、オンは完全なクォート付き文字列です。