本文へスキップ

JSON・XML・YAMLパーサー

JSON・XML・YAMLを貼り付けるかファイルで開くと、文法チェック(誤りは何行目何文字目か)、折りたたみ式のツリー表示、値・キーの検索、パスによる値の検索、整形・圧縮、相互変換ができます。処理はすべてこのブラウザ内で行われ、入力やファイルはサーバーに送信されません。

貼り付けた、または開いたJSON・XML・YAMLはこのブラウザ内でのみ読み取られ、送信も保存もされません。トークンや個人情報が含まれていても安心ですが、共用のパソコンでは使用後に画面を閉じてください。

知っておくこと

  • JSONは厳密に読みます。コメント、末尾のカンマ、シングルクォート、引用符のないキーはエラーとして知らせます。
  • 数値は原文のまま保持します。12345678901234567890や1.0も整形・変換で変わりません。
  • 同じキーが2回出てもエラーにはしませんが、警告で知らせます(実際のプログラムは最後の値だけを使います)。
  • XMLのDOCTYPE内部宣言(ENTITY)は解釈せず拒否します。エンティティ爆弾や外部ファイル読み込みなどの攻撃の入口になるためです。外部DTDを指す宣言は取得せずに読み飛ばします。
  • XMLでは < > & " ' と数値参照(A)だけを展開します。それ以外の &名前; はエラーです。
  • 入力は2MB、入れ子は200段までです。
  • YAMLはよく使う構文に対応しています — マップ・リスト・引用符付きテキスト・| > ブロックスカラー・[ ] { } フロー・コメント。アンカー(&)・エイリアス(*)・タグ(!)・複数ドキュメント(---)・? 複合キー・複数行の引用符付きテキストは未対応で、エラーとして知らせます。エイリアスは内容を指数的に膨らませる攻撃の入口にもなるため展開しません。
  • YAMLの値は1.2のルールで読みます。null・true/false・10進数だけが値になり、yes/no・0x1F・日付は文字列のままです。インデントにはスペースのみ使えます(タブはエラー)。

よくある質問

入力したJSON・XMLはサーバーに送信されますか?

いいえ。読み取り・検査・変換はすべてこのブラウザ内で行われ、どこにも送信・保存されません。

「コード整形」や開発者ツールのJSONタブとの違いは?

それらは見やすく書き直すツールで、こちらは構造を読むツールです。ツリー表示、パスによる値の検索、エラー位置、構造の概要、JSON↔XML変換があります。

XMLをJSONに変換すると数値が文字列になります。

XMLの値には型がないため、既定ではすべて文字列です。「数値・true/falseを値に変換」をオンにすると、数値の形をした文字だけが数値になります(007のような先頭0は文字列のままです)。

JSON→XML→JSONで元に戻りますか?

このツールのルール(属性は「@」、テキストは「#text」、繰り返しは配列)の範囲では戻ります。ただし空文字列とnullはどちらも空要素になりnullに戻り、要素名に使えないキーは変更されます。

YAMLのアンカー(&)とエイリアス(*)はなぜ使えないのですか?

エイリアスは同じ内容を何度も参照でき、数段で文書を何十億倍にも膨らませられる(エイリアス爆弾)ため、展開せずエラーとして知らせます。展開済みのテキストを貼り付ければ読み取れます。