ヘルプ

JavaScriptオブジェクトをJSONに変換して厳密なJSONにする

キーにクォートがない、シングルクォートを使っている、コメントや末尾のカンマがあるといったJavaScriptオブジェクトを貼り付けると、厳密でエスケープ済みのJSONに変換できます。JSからJSONへの変換でも、テキストはパーサーが読み取るだけで、コードとして実行されることはありません。コンソールや設定ファイル、サンプルコードのテキストも、そのまま貼り付けられます。


JavaScriptオブジェクトをJSONに変換する手順

  1. JavaScriptオブジェクトまたはJSONの欄にオブジェクトを貼り付けてください。貼り付けると同時に変換されます。入力した場合は、入力が止まってから約300ミリ秒後に結果が更新されます。
  2. フォーマットで結果の見た目を選んでください。ミニファイ(初期設定、1行にまとめる)、スペース2個、スペース4個から選べます。
  3. 結果は厳密なJSONの下に表示されます。その下に「厳密なJSONに変換しました。」と文字数が出ます。
  4. 結果のすぐ下にあるコピーを押してください。ボタンの表示が一瞬コピー完了に変わります。
  5. 入力欄を空にしてやり直すときは消去を押してください。

簡単な例です。{name: 'Ana', tags: ['a', 'b',], id: 0xFF}を貼り付けます。ミニファイを選んでいる場合、結果は{"name":"Ana","tags":["a","b"],"id":255}になります。

読み取れる緩いJavaScript構文

テキストはJSON5パーサーで読み取ります。JavaScriptのオブジェクトリテラルとJSONの違いを理解しているため、次のような書き方は拒否されずに変換されます。

文字列の中の引用符、バックスラッシュ、改行は自動でエスケープされます。たとえば'He said "hi"'は"He said \"hi\""になります。すでに有効なJSONは、選んだレイアウト以外は変わらずそのまま通ります。

JSONミニファイと、2スペース・4スペースの整形

結果の上にフォーマットのメニューがあります。ミニファイはスペースなしで1行にまとめるので、リクエストの本文、テスト用のデータ、文字列の中に貼り付ける値に向いています。

スペース2個とスペース4個は、読みやすく差分も取りやすいインデント付きのレイアウトです。選んだ時点で結果が切り替わり、コピーは表示されている内容をそのままコピーします。

読み取れないものとエラーメッセージ

受け付けるのはデータだけで、コードは読み取れません。パーサーが止まると、赤い枠に読み取れませんでしたと表示され、理由と「1行目、6列目」のような位置が示されます。たとえば{a:1 b:2}ではbで止まり、その直前にカンマ、コロン、括弧、引用符の抜けがないか確認するよう案内されます。括弧、波括弧、引用符が閉じられないままテキストが終わった場合は、代わりに「テキストが途中で終わっています。」と表示されます。

数値や重複キーなど、変わるもの

結果はブラウザ自身のJSON.stringifyで作られるため、数値はJavaScriptの数値として扱われます。コピーする前に知っておきたい点は次のとおりです。

すでに有効なJSONで、すべての桁をそのまま残してインデントだけしたいときは「JSON整形ツール」を使ってください。スキーマに照らして確認したいときは「JSON Schema バリデーター」を使ってください。

上限とプライバシー


よくある質問

JSON変換をオンラインで行うには?

「JavaScriptオブジェクトまたはJSON」の欄にオブジェクトを貼り付けてください。貼り付けるとすぐに、入力した場合は止まってから約300ミリ秒後に変換され、「厳密なJSON」の下に結果が表示されます。「コピー」を押すと持ち出せます。貼り付けるのはオブジェクトそのものだけで、const data = {...}; のような行は含めないでください。

シングルクォートをダブルクォートにするには?

テキストを貼り付けてください。シングルクォートの文字列はすべてダブルクォートになり、その中のダブルクォートは自動でエスケープされます。たとえば 'He said "hi"' は "He said \"hi\"" になります。変更されるのは文字列とキーだけなので、ダブルクォートの文字列に含まれるアポストロフィはそのままです。

JSONの末尾のカンマを取り除くには?

テキストを貼り付けてください。[1, 2,] のように、オブジェクトや配列の最後の要素の後ろにあるカンマは、入力としては受け付けられ、「厳密なJSON」の結果には含まれません。データのほかの部分は変わりません。

JSONにクォートなしのキーやコメントは使えますか?JSON5との違いは?

厳密なJSONでは使えません。キーも文字列もダブルクォートが必要で、コメントの書き方もありません。JavaScriptのオブジェクトや設定ファイルには、この両方がよく含まれます。このツールはそれらを読み取り、キーをダブルクォートで書き直し、コメントを取り除くので、結果は有効なJSONになります。JSON5はJSONを緩くした上位互換の書き方で、クォートなしのキー、シングルクォートの文字列、末尾のカンマ、コメント、16進数などを許します。このツールはその構文を読み取って通常のJSONで書き出します。

JSONをミニファイしたり、2スペースや4スペースで整形したりするには?

結果の上にある「フォーマット」のメニューを使います。初期設定の「ミニファイ」はスペースなしの1行になります。スペース2個とスペース4個はインデント付きの表示です。別の選択肢を選ぶと、結果と「コピー」でコピーされる内容もすぐ切り替わります。

「読み取れませんでした」と表示されるのはなぜですか?

パーサーが理解できるオブジェクト、配列、値になっていないためです。赤い枠には止まった位置(たとえば「1行目、6列目」)と、確認すべき点が出ます。直前にカンマ、コロン、括弧、引用符の抜けがないか、または最後に括弧、波括弧、引用符が閉じられていないかを確認してください。const x = {...} のような文、末尾のセミコロン、バッククォートの文字列、undefined、関数、new Date() は受け付けません。オブジェクトだけを貼り付けてください。

貼り付けたJavaScriptは実行されますか?

いいえ。テキストはパーサー(JSON5)が読み取るだけで、evalは使いません。そのため、貼り付けたものが実行されることはありません。関数、変数名、new Date() がエラーになるのも同じ理由です。評価する対象ではなく、エラーとして扱われます。

大きな数値が変わってしまったのはなぜですか?

数値はJavaScriptの数値として扱われ、正確に表せるのは9007199254740991までです。12345678901234567890 は 12345678901234567000 に、1.0 は 1 になります。長いIDの全桁を残したいときは、入力で引用符に入れるか、数値を書かれたとおりにコピーする「JSON整形ツール」を使ってください。NaN、Infinity、-Infinity はJSONで書き表せないため null になります。同じキーが2回出てきた場合は、最後の値が残ります。

JSON.stringifyと同じですか? 貼り付けられる文字数やアップロードについても教えてください。

結果はJSON.stringifyで作っているので、出力のルールは同じです。違いは入力です。JSON.stringifyはコードの中の本物のオブジェクトが必要ですが、ここではオブジェクトのテキストを貼り付けるので、緩い構文も使えます。最大5,000,000文字まで入力できます。変換はお使いの端末の中で行われ、アップロードも保存もされません。

おすすめ

無料でツールを続ける支えになります。✨

画像はイメージです。 Amazonのアソシエイトとして、Capsule Toolsは適格販売により収入を得ています。