XML ⇄ JSON
どちらかの形式を貼り付けると、入力に合わせてもう一方が表示されます。双方向に対応。
使い方
- XML または JSON を入力欄に貼り付けてください。入力に合わせて結果が描画され、ボタンを押す必要はありません。方向は先頭の文字(XML は <、JSON は [ または {)から判定され、結果の上に表示されるので確認できます。
- 方向が誤って判定された場合は、XML → JSON または JSON → XML を選んでください。下のオプションは方向に応じて変わります。XML → JSON では「数値と真偽値を判定」が、JSON → XML では配列を囲む「ルート名」が表示されます。
- 結果をコピーまたはダウンロードします。どちらも画面に表示されている正確なテキストを使い、ファイル名は data.json または data.xml です。「サンプルを読み込む」を押すと、現在の方向に応じた例が入力されます。
例
入力(XML)
<note id="1"><to>太郎</to><from>花子</from><body>こんにちは</body></note>
出力(JSON)
{ "note": { "@id": "1", "to": "太郎", "from": "花子", "body": "こんにちは" } }
id 属性は「@id」になり、各子要素はキーになり、<body> 内のテキストは文字列値になります。「数値と真偽値を判定」をオフにすると、id を含むすべての値がテキストのまま保たれます。
ルール・制限・既知の問題
- ファイルのアップロード、ドラッグ&ドロップ、URL からの取得には対応していません。テキストを貼り付けてください。ドロップゾーンは結果に必要な高さを奪い、ファイルを正しく読むには非 UTF-8 エンコーディングの処理が必要になります。XML フォーマッターでファイルを開いて(GB18030、Big5、Windows-1256)テキストをコピーしてください。
- 入力は1,000,000文字までです。200,000文字を超えると、入力が止まるまで結果の更新を待ち、その旨を表示します。上限を超えると明示的なエラーになり、入力が黙って切り詰められることはありません。
- マッピングは意図的に固定です。要素はオブジェクトに、属性は「@name」に、要素のテキストは「#text」に、子要素はキーに、同じ名前の複数の子要素は配列になります。テキストのみの葉要素は単なる文字列になるため、深くネストした文書も読みやすく保たれます。
- 型判定(XML → JSON)は保守的です。true / false / null(小文字のみ)と厳密な JSON 数値のみを実際の型に変換します。先頭にゼロがある整数(00501)や16桁以上の数値は文字列のままで、スイッチがオフならそれ以外もすべてテキストのままです。XML の属性は本質的にテキストであるため、属性は常にテキストとして保持され、型変換されません。
- JSON → XML には単一のルートが必要なため、最上位のオブジェクトはその唯一のキーをルート要素として使います。最上位の JSON 配列には単一のルートがないため「ルート名」要素で囲み、各項目は繰り返しの子要素(既定では「item」)になります。
- キーの下の JSON 値は、オブジェクト、配列、文字列、数値、true / false、null のいずれかです。「@name」キーは属性になり(null / undefined はスキップ)、「#text」は要素のテキストになり、それ以外のキーは子要素になります。配列は繰り返し要素を生成します。
- XML のコメント、処理命令(<? … ?>)、DOCTYPE は破棄されて数えられます(JSON では表現できないため)。CDATA はテキストとして保持されます。混在コンテンツ(子要素の隣にあるテキスト)は「#text」に平坦化され、元の順序は保持されません。影響を受けた要素は数えられるので、確認できます。
- JSON は厳密に解析されます。コメント、末尾カンマ、単一引用符、エスケープされていない制御文字は許可されず、ネストは64階層までです。1行1オブジェクト(JSON Lines)は受け付けません。先にオブジェクトを配列で囲んでください。
- XML の実体参照(& < >)はテキストと属性内にそのまま保持され(デコードされません)、往復変換で正確なバイト列が再現されます。エスケープは JSON → XML 側で追加され、テキストでは & < > が、属性値では「"」がエスケープされます。
- 対象外: XSLT、XPath、XML Schema 検証、タグ名の一部として以外の名前空間、重複キーを持つ JSON(JSON.parse と同様に最後のものが優先)、コメント順序の保持。何もアップロード、保存、URL への埋め込みは行いません。
関連ツール
データをもう一方の形式にした後によく使われるツールです。