ToolActToolAct

JSON エスケープツール

JSON文字列のエスケープ・アンエスケープを高速処理

入力内容
文字数: 0
バイト数: 0
変換結果
文字数: 0
バイト数: 0

変換方法を選択

JSON エスケープとは?

JSON エスケープは、JSON文字列内の特殊文字をエスケープシーケンスに変換するプロセスです。一般的なエスケープ文字には、"\" に、\\\\\\ に、改行を \n に、タブを \t にするなどがあります。

使用例:JSONデータを別のJSON文字列内に埋め込む場合、コード内で特殊文字を含むJSON文字列定数を定義する場合、データベースにJSONデータを保存する場合などにエスケープが必要です。

使い方

使い方

  1. 入力ボックスにテキストを貼り付けるか入力します
  2. 「JSON Escape」をクリックして特殊文字をエスケープします(例:" → \")
  3. 「JSON Unescape」をクリックしてエスケープされた文字を元に戻します(例:\" → ")
  4. 結果は下部に自動表示され、そのままコピーできます

エスケープに関する注意

  • 対象のコンテキストに合わせてエスケープしてください。JSON文字列、JavaScriptソース、URL、HTML属性ではエスケープルールが異なります。
  • エスケープを解除したあと、設定ファイルに貼り付ける前に改行・バックスラッシュ・引用符を確認してください。

利用シーン

テキストをJSON文字列内に安全に埋め込むエラーメッセージ、SQLフラグメント、正規表現、Windowsパス、複数行のプロンプトをJSON文字列値にする必要がある場合、エスケープモードで引用符、バックスラッシュ、改行、制御文字をJSON安全なシーケンスに変換します。文字数とバイト数の表示により、APIリクエストに貼り付ける前のペイロード増加を把握できます。すべての処理はブラウザの標準JSON.stringifyで行われ、元の文字列がページ外に出ることはありません。
ログからエスケープされたペイロードを読み取るAPIゲートウェイやロギングシステムは、エスケープされた改行や引用符を含むJSON文字列値を表示することがよくあります。アンエスケープモードでそれらのシーケンスを読みやすいテキストに戻し、スタックトレース、シリアライズされたプロンプト、Webhook本文、コピーした設定値を確認しやすくします。アンエスケープはブラウザのJSON.parseを使用するため、復元された文字列はローカルに留まり、コピーするまで出力フィールドにしか表示されません。
ローカルで複雑なテキストのラウンドトリップを検証するこのツールはブラウザのJSONパーサーとストリンギファイヤーに依存しているため、標準的なJSON文字列エスケープルールをそのまま反映し、カスタム方言を導入しません。そのため、値がJSONドキュメント内に安全に収まるかどうかを確認するローカルスクラッチパッドとして最適です。入力文字列はブラウザ内でのみ処理され、API呼び出しは行われないため、スタックトレース、プロンプト、未公開のコピーを含む下書きがネットワークを通過することはありません。
JSON-in-JSONフィールド用に値をエスケープするWebhookペイロードが文字列フィールドの値としてシリアライズされたJSONオブジェクトを運ぶ必要がある場合、内部JSONをエスケープモードに通して、外部パーサーがそれを1つの文字列として読み取れるようにします。受信側でアンエスケープパスを組み合わせて、契約を出荷する前にラウンドトリップの整合性を確認してください。エスケープはローカルのstringifyであるため、ネストされた引用符や埋め込まれた\uシーケンスなどのエッジケースを外部ツールに公開せずに試すことができます。
コピーしたテキストに隠れた制御文字を発見する端末、PDF、チャットアプリから貼り付けたテキストには、NULバイト、BEL、不正なCR文字などが含まれていることが多く、ダウンストリームのJSONパーサーを密かに壊します。エスケープすることでこれらが\u0000形式のシーケンスとして表面化し、ドキュメントを無効な塊にする前に確認・除去できます。ページ内のJSONエンコーダーに対してのみ実行されるため、プライベートなスニペットを含む貼り付け文字列はブラウザタブから出ることなく表示・書き換えされます。

仕組み

JSON(RFC 8259)は厳密なテキスト文法であり、すべての文字列リテラルはASCIIダブルクォート(U+0022)で囲む必要があり、文法を壊す可能性のある文字はすべてバックスラッシュエスケープで表現しなければなりません。必須エスケープは以下の通りです:ダブルクォートはバックスラッシュ+クォートに、バックスラッシュはダブルバックスラッシュに、U+0000からU+001Fまでの32個の制御文字(\b U+0008、\f U+000C、\n U+000A、\r U+000D、\t U+0009を含む)は対応するエスケープシーケンスに変換されます。U+001Fより上の文字はCJK漢字、絵文字、アクセント付き文字、その他の補助文字を含め、生のUTF-8バイト列としてそのまま文字列内に記述できます。フォワードスラッシュのエスケープ(\/)は任意ですが、JSONがHTMLの<script>タグ内に埋め込まれる場合は、終了スクリプトタグのシーケンスが周囲のscript要素を誤って閉じないようにする慣例があります。 実際には2層のエスケープが登場します。JSONエスケープ(構文的な置換)はRFC 8259が要求する唯一のもので、文字列が有効なJSONであることを保証します。Unicodeエスケープ(各文字を\uXXXXや\u{XXXXX}に書き換える)は表現の選択であり、構文的な要求ではありません。ファイル上の見た目が変わるだけで、デコード結果は変わりません。CJKテキストは生のUTF-8バイト列としてすでにJSONとして有効であり、ページのUnicodeエスケープモードでは\uXXXXに書き換えられます。これはJavaやJavaScriptのソースファイルに文字列を渡す際にマルチバイトUTF-8を扱う必要をなくすのに便利ですが、文字あたり4〜6バイト増加し可読性が低下します。 エスケープルールにはエッジケースがあります。JSON.parseは先頭のゼロ(01はパースエラー。JavaScriptでは8進数の1として受け入れられるが)に厳格です。V8のJSON.stringifyは最小限のエスケープを常に生成し(制御文字は可能な限り\b/\n/\r/\t/\fに、それ以外は\uXXXXに、スラッシュ/、U+2028、U+2029は可読性のために生のまま残す)、孤立サロゲート(高位サロゲートの後に低位サロゲートが続かないもの)はRFC 8259上は有効なJSONですが、厳密モードやTypeScriptではInvalidStringとして拒否されます。ページのエスケープモードでは孤立サロゲートを\uFFFD(置換文字)に置き換え、どの標準パーサーでもラウンドトリップできるようにします。 JavaScriptソースコードへの埋め込みには3層目のエスケープが必要です。JS文字列リテラル内のJSON文字列ではバックスラッシュ自体をエスケープする必要があります。ページのJS文字列出力モードはこの二重エスケープを追加し、evalボタンやJSON.parseボタンが2つのエンコーディングが同じ文字列にデコードされることを示します。HTMLへの埋め込みコンテキストでは4層目が追加されます。<、>、&は周囲ページでHTMLエンティティエスケープが必要で、属性値ではクォートのエスケープも必要です。JSON-in-HTMLは有名に危険(前述の</script>の落とし穴)であり、textContentの代入や<script type="application/json">ブロックへのJSON.stringify出力(script.textContentで読み取り、evalは使用しない)のような安全なシンクの使用が推奨されます。 JSON5(人気のあるスーパーセット)はシングルクォート文字列、複数行文字列、クォートなしキー、末尾カンマ、NaN/Infinity、単行コメント//を追加します。本ページはJSON5出力を生成しません。ラウンドトリップが必要な場合は専用ライブラリを使用してください。

  • JSON文字列(RFC 8259)では、ダブルクォートをバックスラッシュ+クォートに、バックスラッシュをダブルバックスラッシュに、32個の制御文字U+0000..U+001F(\b \f \n \r \t、残りは\uXXXX)にエスケープする必要があります。U+001Fより上はCJK、絵文字、アクセント付き文字を含め生のUTF-8として有効です。
  • 2層の「エスケープ」が存在します:JSONエスケープ(構文的、必須)は文字列を有効なJSONにし、Unicodeエスケープ(表現的)は文字を\uXXXXに書き換え、可読性のみを変更し有効性は変えません。
  • 任意の「/」:JSONでは/を\/にエスケープできます。慣例として、HTMLの<script>内にJSONを埋め込む場合は終了スクリプトタグのシーケンスが周囲のタグを閉じないようにエスケープします。
  • CJKは生のUTF-8 JSONではエスケープされません:例「こんにちは」は6バイトの生データです。ページのUnicodeエスケープモードでは\u3053\u3093\u306b\u3061\u306fのように書き換え、ソースファイルでの使用に際し可読性と互換性をトレードオフします。
  • 孤立サロゲート:高位サロゲート(U+D800..U+DBFF)の後に低位サロゲートが続かない場合、RFC 8259上は有効なJSONですが、厳密モードやTypeScriptのJSON.parseでは拒否されます。ページは孤立サロゲートを\uFFFDに置き換え、厳密なパーサーでもラウンドトリップできるようにします。
  • JSON.parseは厳密です:先頭のゼロ(01)はパースエラー、NaN/Infinityは有効なリテラルではありません、末尾カンマは許可されません。V8のJSON.stringifyは最小限のエスケープを常に生成し、スラッシュ/とU+2028/U+2029は可読性のために生のまま残します。
  • JSON-in-JS:JSON文字列をJS文字列リテラルに埋め込むには、バックスラッシュを二重にする必要があります。ページの「JS文字列」出力はこの層を追加し、結果へのevalはJSON.parseと同じ文字列を返します。
  • JSON5スーパーセット:シングルクォート文字列、複数行文字列、クォートなしキー、末尾カンマ、NaN/Infinity、単行コメント//。本ページは厳密なRFC 8259 JSONを生成し、JSON5ではありません。

使用例

ダブルクォートとバックスラッシュを含む文字列

入力:  He said "Hello\World"
出力: He said \"Hello\\World\"

改行とタブを含む文字列

入力:  Line1\tIndent\nLine2
出力: Line1\tIndent\nLine2

中国語とダブルクォートを含む文字列

入力:  {"name": "Alice", "msg": "He said \"Hi\""}
出力: {\"name\": \"Alice\", \"msg\": \"He said \\\"Hi\\\"\"}

よくある質問

JSON 文字列をエスケープすると何が行われますか?

入力をクォートで囲み、各特殊文字を JSON で安全なエスケープシーケンスに置換します。" → \"、\ → \\、改行 → \n、タブ → \t、制御文字 → \u00NN。結果は有効な JSON 文字列リテラルとなり、別の JSON ドキュメントやコードエディタに貼り付けることができます。

どのような場合に必要ですか?

よくあるケースは、複数行のメッセージを JSON 設定ファイルに埋め込む、JSON 文字列をコマンドライン引数として渡す、JSON の中に JSON を入れる (例えば本体自体が JSON エンコードされた文字列である API リクエストボディ)、ログ記録前のユーザー入力のサニタイズなどです。

エスケープと URL エンコードは同じですか?

いいえ。JSON エスケープは \n、\"、\u00XX を使用します。URL エンコードは %20、%22、%0A を使用します。構文上のコンテキストが異なれば、エスケープルールも異なります。出力先のフォーマットに合うほうを使ってください。

アンエスケープモードはあらゆる JSON エスケープに対応していますか?

はい。標準のエスケープすべて (\"、\\、\/、\b、\f、\n、\r、\t、\uXXXX) に対応しています。U+FFFF を超えるコードポイントのサロゲートペア (\uD83D\uDE00 = 😀) は実際の絵文字に再構成されます。不正なエスケープシーケンスがあれば、修正できるようエラーが表示されます。

文字列のエスケープとオブジェクトの文字列化の違いは何ですか?

エスケープはテキストをクォートされた JSON 文字列に変換します。文字列化 (JSON.stringify) は JavaScript オブジェクトを完全な JSON ドキュメントに変換します。このページは前者を行います。後者には、コードエディタでオブジェクトを JSON として記述するか、JSON フォーマッタを使用してください。

制御文字は常にエスケープされますか?

はい。JSON では必須です。改行、タブ、NULL、その他の ASCII 制御文字 (0x00-0x1F) はエスケープしないと有効な JSON ではなくなります。実装によっては DEL (0x7F) や U+FFFF を超える文字もエスケープしますが、本ページは RFC 8259 に厳密に従います。

データはどこかに送信されますか?

いいえ。エスケープとアンエスケープはブラウザ内で実行されます。貼り付けたテキストはアップロードされません。

関連ツール

JSON フォーマットツール

オンラインJSONフォーマットツール。シンタックスハイライト、エラー検出、圧縮・美化をサポート。ワンクリックでJSONデータを美化し、フォーマットエラーを素早く特定し、開発効率を向上させます。

Base64 エンコードデコードツール

オンラインBase64エンコード・デコードツール。UTF-8テキスト、日本語、画像変換をサポート。リアルタイムエンコード・デコード、ソフトウェアインストール不要、データはローカル処理でプライバシー保護。

URL エンコードデコードツール

オンラインURLエンコード・デコードツール。特殊文字、日本語パラメータを自動処理。URLパラメータを素早く変換し、文字化け問題を解決し、データの正確な送信を確保。

JSON to TypeScript

オンラインJSON to TypeScriptツール。インターフェース定義を自動生成。ネストオブジェクト、配列、ユニオン型対応、TypeScript開発を加速。

JSON Schema ジェネレーター

無料オンラインJSON Schemaジェネレーター、JSONデータから標準準拠のスキーマ定義を自動生成。ネストオブジェクト、配列型推論、必須フィールド設定に対応、データ検証ルールを素早く作成。

HTML エンティティエンコードツール

オンラインHTMLエンティティエンコード・デコードツール。特殊文字をHTMLエンティティに変換。XSS攻撃を防止し、HTMLコードの安全な表示を確保。