本文へスキップ
Case Converter Online
ja

JSON文字列化ツール(JSON Stringify)

テキストや JSON を貼り付けると、エスケープ済みの1つの JSON 文字列に変換します。別の JSON ドキュメントの中、設定値、コードの1行にそのまま入れられます。

テキストか JSON を貼り付けるか、「サンプル」を押してください。処理はすべてブラウザ内で行われます。

このツールでできること

JSON 文字列とは、ダブルクォートで囲まれたテキストのうち、一部の文字をバックスラッシュ付きで書いたものです。ダブルクォートは \"、バックスラッシュは \\、改行は \n、タブは \t になります。このツールは、入力したテキストをこの形式の文字列に書き換えます。JavaScript の JSON.stringify に文字列を渡したときと同じ処理です。

ある JSON ドキュメントの1つのフィールドに、別の JSON や、クォートや改行を含むテキストを入れたいときに必要になります。エスケープを手で書くのは時間がかかり、間違えやすい作業です。バックスラッシュが1つ抜けただけで、ペイロード全体が不正な JSON になってしまいます。

使い方

  1. 左のボックスにテキストか JSON を貼り付けるか、ファイルを開く または サンプル を押します。
  2. 入力に合わせて、右側にエスケープ済みの文字列が表示されます。
  3. 必要なオプションを選びます。
    • 先に JSON を詰める:正しい JSON から整形の空白を取り除いてからエスケープします。初期設定でオンです。
    • クォートで囲む:外側のダブルクォートを付けます。貼り付け先にすでにクォートがある場合はオフにしてください。
    • 非 ASCII 文字を \u でエスケープ:アクセント付きの文字、記号、日本語などの ASCII 以外の文字を \u コードで書きます。
  4. コピー を押すか、ダウンロード でテキストファイルとして保存します。

ボックスの下の行には、入力が正しい JSON だったかどうかと、結果の文字数が表示されます。

変換例

クォートと改行を含む通常のテキストです。

He said "hello"
then left.

これが次のようになります。

"He said \"hello\"\nthen left."

先に JSON を詰める をオンにして、整形済みの JSON を変換した場合です。

{
  "name": "Ada",
  "tags": ["admin", "dev"]
}

これが次のようになります。

"{\"name\":\"Ada\",\"tags\":[\"admin\",\"dev\"]}"

先に JSON を詰める をオフにすると、インデントも残ったままエスケープされるので、{ と改行、"name": "Ada" は次のようになります。

"{\n  \"name\": \"Ada\"\n}"

Windows のパスでは、すべてのバックスラッシュが2つになります。

"C:\\Users\\Ada\\notes.txt"

非ASCII文字(日本語など)

JSON の文字列にはどんな Unicode 文字でも入れられるので、Café 東京 はそのままで正しい JSON です。

"Café 東京"

古いシステム、ターミナル、バイト数に制限のあるフィールドの中には、ASCII しか受け付けないものがあります。非 ASCII 文字を \u でエスケープ をオンにすると、同じテキストが次のようになります。

"Caf\u00e9 \u6771\u4eac"

日本語の文章は、ひらがな、カタカナ、漢字のすべてが ASCII 以外の文字なので、このオプションをオンにすると1文字ごとに \u コードになり、結果はかなり長くなります。受け取る側が UTF-8 を扱えるなら、オフのままで問題ありません。

ほとんどの絵文字のように、基本多言語面(BMP)の外にある文字は、2つのコード(サロゲートペア)で書かれます。にっこり笑う顔の絵文字は "\ud83d\ude00" になります。どの JSON パーサーでも、これらは元の文字に戻せます。

外側のクォートなしで出力する

文字列をテンプレート、フォームの入力欄、すでにあるクォートの中に入れる場合は、クォートで囲む をオフにします。すると、Tab、タブ、here と続くテキストは次のように出力されます。

Tab\there

仕組み

このツールはブラウザ標準の JSON.stringify を使っているので、エスケープは JSON の標準どおりに行われます。その前に、先に JSON を詰める がオンで入力が { か [ で始まっていれば、入力を JSON として読み込もうとします。読み込めた場合は、数値を書いたとおりに保ったまま、空白なしで JSON を書き出します。そのあと、テキスト全体を1つの文字列としてエスケープします。サーバーには何も送信されません。

ヒントと制限事項

  • 結果は JSON 文字列であり、JavaScript のテンプレートリテラルやシェルの文字列ではありません。シェルや一部の言語では、さらにその言語のクォートが必要です。
  • 結果をもう一度文字列化すると、二重にエスケープされた文字列になります。API がそれを求めている場合もありますが、たいていはバグのサインです。
  • 大きな入力も問題ありません。処理は端末内で行われ、速度はお使いの端末の性能によります。

ほかの方法

JavaScript:JSON.stringify(text) でエスケープした文字列が返ります。オブジェクトを埋め込むには JSON.stringify(JSON.stringify(obj)) を使います。

Python:文字列に対して json.dumps(text) を使うと同じ結果になります。初期設定では非 ASCII 文字がエスケープされるので、日本語などをそのまま残したいときは ensure_ascii=False を指定してください。

jq:jq -Rs . file.txt は、ファイル全体を生のテキストとして読み込み、1つの JSON 文字列として出力します。

関連ツール

エスケープされた文字列を読めるテキストや JSON に戻すには、JSON アンエスケープツール を使ってください。先に JSON をチェックしたり整形したりするには JSON整形ツール を、スプレッドシートから JSON を作るには CSV JSON 変換ツール をお使いください。

JSON文字列化のよくある質問

JSON の stringify(文字列化)とはどういう意味ですか?

値を JSON のテキストとして書き表すことです。テキストの場合は JSON 文字列になります。つまり、テキスト全体をダブルクォートで囲み、中のダブルクォート、バックスラッシュ、改行、タブをエスケープして、正しい JSON にしたものです。

JSON を JSON 文字列の中に入れるのはどんなときですか?

JSON ドキュメント全体を、1つの文字列フィールドとして保存したり送信したりするシステムがあります。メッセージキュー、Webhook のペイロード、ログの行、環境変数、一部のデータベースの列などです。中に入れる JSON は、収まるようにエスケープする必要があります。

「先に JSON を詰める」は何をするものですか?

入力が正しい JSON の場合、エスケープする前にスペースと改行を取り除きます。結果が短くなり、整形の改行から来る \n が入りません。入力が正しい JSON でない場合は、入力したテキストがそのままエスケープされます。

元に戻すにはどうすればいいですか?

JSON アンエスケープツールを使ってください。外側のクォートの有無にかかわらずエスケープされた文字列を受け付け、元のテキストや JSON に戻します。

その他のコード・データツール

すべてのツールを見る