このページのコードが起動しませんでした。

index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのためファイルを選んでも何も起きません。フォルダはhttpで配信してください。

powershell -ExecutionPolicy Bypass -File serve.ps1

そのうえでhttp://localhost:8080/を開いてください。

JSONフォーマッター — 整形・圧縮・変換

JSON・XML・HTML・CSS・YAMLを、整形するか変換します。よそのサーバーに貼り付けるものは何もありません。

言語: 日本語
ソースを見る
テキストとコードはブラウザー内で処理されます。処理のためのアップロードはありません。

整形も変換も文字列に対する計算で、このページの中で行われます。パーサーは手書きでsrc/にあります。shared/parse-json.js、shared/parse-xml.js、css.js、shared/parse-yaml.js。それ以外は何もありません。この道具にはどんなネットワーク機能もありません。取りに行く先も、送る先もありません。それがこのサイトのほぼどこよりも効いてくるのがここです。人が整形ツールに貼り付けるものは、アクセストークン、セッションのクッキー、顧客の記録、未公開のコードだからです。

いまの通信: 確認中…

オフライン: 確認中…

鵜呑みにする必要はありません。DevToolsの「ネットワーク」タブを開いたまま何かを整形してみてください。貼り付けた内容の1文字も、どのリクエストにも載りません。回線を抜いてから整形してみるのでも構いません。

1 仕事を選ぶ

言語 判定はあくまで出発点で、直すのはクリック1回です。

すべてのオブジェクトのキーを並べ替える コードポイントではなく読みの順で並べるので、item2がitem10より前に来ます。JSONのみです。

いちばん外側の要素の名前 XMLは頂点にひとつだけ要素を持ちますが、JSONは持ちません。だから、ひとつこしらえる必要があります。

2 貼り付ける

空

3 結果を持ち出す

まだ何もありません。

 

Markdownで表示

JSONをアップロードせずに整形・変換する手順

  1. 仕事を選びます。タブは2つ、入力欄は1つ。整形はJSON・XML・HTML・CSS・YAMLを整えるか、平らに圧縮します。変換はJSONをYAMLやXMLにし、その逆もします。いま整形したテキストがそのまま変換するテキストになるので、2回貼り付ける必要はありません。
  2. 貼り付けるか、ファイルをドロップします。選択してコピーできるものなら何でも構いません。選択欄に落としたファイルはお使いのブラウザが読んで欄に入れます。省略できるアップロードの段階が、そもそもありません。
  3. 言語を判定させるか、自分で指定します。メニューには、テキストを何として読んだかが出ます。直すのはクリック1回です。判定はあくまで出発点であり、だからこそ黙って適用せずに表示しています。
  4. 字下げを選ぶか、平らに詰めます。半角2つ、4つ、あるいはタブ。平らに詰めるとは、読むためだけにあった空白をすべて取り去った同じ文書のことで、結果にはそれで何バイト減ったかが出ます。
  5. エラーは、エラーのある場所で読みます。ここでパーサーが失敗したときは、何を見つけたのか、何行目の何列目かを伝えます。「位置4193に予期しないトークン」ではありません。たいていはそれだけで、ほかを開かずに設定ファイルを直せます。
  6. 結果を持ち帰ります。コピーするか、出てきた言語の名前が付いたファイルとしてダウンロードしてください。

詳しい解説

JSONを誰にも渡さずに整形する方法 自分のブラウザの中でJSONを整え、確かめ、詰める方法。整形ツールがファイルについて決して変えてはいけないもの、エラーの読み方、そして貼り付ける先が問題になる理由。

よくある質問

テキストはどこかにアップロードされますか?

いいえ。このページのパーサーもプリンターも、お使いのブラウザの中で、お手元のハードウェアで動く関数です。この道具にはどんなネットワーク機能もありません。何かを取りに行くことも、送ることもありません。ページのContent-Security-Policyには接続してよいアドレスがすべて書かれていて、そのどれもこのサイトのものではありません。アクセストークンやセッションのクッキー、顧客の記録をここで扱う理由はそれです。そういうものを他人の整形ツールに貼り付けるのは、相手に渡すのと同じことだからです。

JSONの整形で、見た目以外に変わるものはありますか?

ありません。そしてこれは、聞こえるほど簡単ではありません。キーは書いた順のままです。JSON.parseの上に作られた整形ツールは、整数のようなキーを黙って先頭へ動かすので、{"10":a,"2":b}が{"2":b,"10":a}になって戻ってきます。数字は打ったままの桁を保つので、20桁のIDが末尾3桁を倍精度に持っていかれることもなく、1e999がnullになることもありません。重複したキーは両方残します。どちらが勝つかを規格が決めていない以上、片方を捨てるのはあなたに代わって決めることになるからです。

どの言語を整形できますか?

JSON、XML、HTML、CSS、YAMLです。JSON・XML・HTML・CSSは平らに詰めることもできますが、YAMLはできません。YAMLの短い書き方はフロースタイルで、読みにくく、読みにくいことはファイルをYAMLで持っておく理由の正反対だからです。JavaScriptは意図して一覧に入れていません。下の質問をご覧ください。

JavaScriptやPython、SQLを整形しないのはなぜですか?

プログラミング言語を整えるとは、それをきちんと解析するということであり、ほとんど正しい整形ツールは、まったくないより悪いからです。見た目は問題ないのに別のことをするコードを生みます。JSON・XML・CSS・YAMLの文法は、手で読み、自分で走らせられるテストで確かめられる程度に小さいものです。JavaScriptの整形ツールといえばPrettierで、1メガバイトのパーサーです。あれはウェブページではなく、エディターの中にあるべきものです。

YAMLにnoと書いたのに、JSONでは文字列になりました。なぜですか?

それが文字列だからで、ここが読むのはYAML 1.1ではなくYAML 1.2だからです。YAML1.1ではyes、no、on、offが真偽値でした。ノルウェーの国コードがfalseになる、あの有名な不具合です。YAML 1.2はそれをやめ、この道具も同じです。テキスト以外として読まれるのはtrue、false、null、~だけです。逆向きでは、これらの語は引用符付きで書き戻します。この道具なら引用符がなくてもテキストとして読みますが、そのファイルを次に開くものはそうとは限らないからです。PyYAMLはいまも既定が1.1です。厳しく読み、控えめに書く。両方の向きで正しくなる組み合わせはこれだけです。

YAMLをJSONにすると何が失われますか?

コメントです。JSONには置く場所がありません。アンカー、エイリアス、タグは推測せずにはっきり拒否します。どれもJSONには言えないことを言っており、黙って解釈をひとつ選ぶ変換器は、ファイルの内容とは違う文書をあなたに渡すことになるからです。逆向きでは何も失われません。JSONの文書はすでにYAMLの文書です。

JSONをXMLにすると何が失われますか?

空のオブジェクト、空の配列、空の文字列の違いです。どれも空の要素になります。そして、それぞれの値の型も失われます。XMLに型がないからで、逆変換がすべてを文字列のままにし、8080を数値だと決めつけないのもそのためです。配列は繰り返しの要素になります。読み戻せる形はそれだけだからです。要素名にできないキーは、扱いにくい文字を置き換えます。どのパーサーも読まない文書を吐き出すよりはましだからです。

HTMLの字下げをやり直すと、ページの見た目は変わりますか?

変わることがあり、そこは正直に書いておきます。インライン要素どうしのあいだの空白は、単語と単語のあいだの空白です。動かすのはただではありません。歯止めは2つあります。<pre>と<textarea>はそのまま写し取ること、そしてテキストしか入っていない要素は1行のままにすることです。それ以外は整えます。

どれくらい大きいファイルまで扱えますか?

ここに上限は設けていません。その費用を払うサーバーが存在しないからです。実際の頭打ちはお使いの端末です。数メガバイトのJSONなら問題ありません。とても長い文書では、キーボードを取り合う代わりに、入力が一息つくのを待ってから整形し直します。

無料ですか。アカウントは必要ですか?

無料です。アカウントも、ログインも、試用期間もなく、貼り付けられる量にも制限はありません。このサイトには広告があり、それが費用を賄っています。広告にテキストの情報が渡されることはありません。

オフラインでも動きますか?

動きます。ページを一度読み込んでから通信を切っても、そのまま使えます。何もアップロードされていないことを示す、いちばん簡単な方法でもあります。整形のためにテキストをどこかへ送っている道具なら、線を抜いた瞬間に止まるからです。