JSON・XML変換ツール

ブラウザ内で動作し、何もアップロードされません

JSONをXMLに、XMLをJSONに変換します。属性、繰り返し要素、名前空間は明確なルールで扱います。

Input · JSON

Output · XML

Converted XML appears here as you type.

Ready
Ln 1, Col 1

APIにおけるJSONとXML

JSONもXMLも、構造化されたデータをテキストで表します。JSONにはオブジェクト、配列、そして数値や真偽値などの型付きの値があります。XMLには入れ子の要素、属性、テキストがあり、スキーマで指定しない限りすべてがテキストです。SOAPのWebサービス、RSSやAtomのフィード、多くの銀行・決済・行政のシステムは今もXMLを使っているため、JSONで作ったアプリでは変換が必要になることがよくあります。

2つの形式は1対1には対応しないため、このツールは一般的で元に戻せる規則に従います。要素はキーに、その要素のテキストは値になります。属性は @id のように @ で始まるキーになります。要素がテキストに加えて属性や子要素を持つ場合、テキストは #text に入ります。繰り返し出てくる要素は配列になります。名前空間のプレフィックスは書かれたとおりに残るので、<soap:Body> は "soap:Body" に、宣言は "@xmlns:soap" になります。

XMLには型がないため、初期設定ではすべて文字列のままです。<zip>007</zip> は "007" に、<id>7</id> は "7" になります。Numbers をオンにすると、JSONの数値とまったく同じ形で書かれた値と true、false が型付きの値として読み込まれます(007 はテキストのまま)。逆方向では、ルート要素はJSONの唯一のトップレベルのキーから取られ、キーが複数ある場合は Root name が使われます。

使い方

  1. 1ツールバーで JSON → XML か XML → JSON を選びます。データを Input パネルに貼り付けるか、ファイルをドロップするか、Ctrl+O で開きます(最大5 MB)。
  2. 2結果は Output パネルに表示され、入力に合わせて更新されます。出力の上のメモには、キーの名前変更やコメントの省略など、変換で変更した点が表示されます。
  3. 3XML → JSON では、Always arrays を選ぶとすべての子要素が配列になり(コードから読みやすくなります)、Numbers を選ぶと数値と真偽値が変換されます。JSON → XML では、Root name と、XML宣言で始めるかどうかを設定します。
  4. 4入力が無効な場合は、出力パネルに行と列が表示されます。F8でカーソルを問題の箇所に移動できます。
  5. 5Swap(Shift+Alt+S)は出力を入力に移して方向を反転させるので、往復変換の結果を確認できます。結果をコピーするか、Ctrl+S でダウンロードします。

トラブルシューティング

3行目で開いた要素を閉じる </item> が必要です
タグは開いたのと逆の順番で、同じ名前・同じ大文字小文字で閉じる必要があります。メッセージに出ている要素の終了タグが抜けていないか、綴りが間違っていないかを確認してください。
単独の & は &amp; と書く必要があります
XMLのテキストや属性では、& はエンティティの始まりを表します。アンパサンドは &amp;、< は &lt; と書くか、テキストを <![CDATA[ ... ]]> で囲んでください。
不明なエンティティ &nbsp;
定義されているのは、XMLの5つのエンティティ(&lt; &gt; &amp; &quot; &apos;)と &#160; のような文字参照だけです。&nbsp; はHTMLのものなので、代わりに &#160; を使ってください。
2つ目のルート要素:XMLのルート要素は1つだけです
XMLドキュメントのトップレベルの要素は1つでなければなりません。複数の要素を1つの親要素で囲んでください。
XML出力でキーの名前が変わっている
XMLの名前には空白やほとんどの記号を使えず、数字で始めることもできません。そのため first name は <first_name> に、2fa は <_2fa> になります。メモに変更点がすべて表示されます。XMLで別の名前を使う必要がある場合は、JSON側のキーを変更してください。

よくある質問

JSONの配列はどのようにXMLに変換されますか?

配列の各要素が、配列のキーの名前を持つ要素になり、要素の数だけ繰り返されます。"tag": ["a", "b"] は <tag>a</tag><tag>b</tag> になります。トップレベルの配列はルート要素で囲まれ、各項目が1つの <item> になります。空の配列からは要素が作られないため、JSONに戻すときに復元できません。その場合はメモでお知らせします。

コメント、CDATA、処理命令はどうなりますか?

CDATAセクションは普通のテキストになります。コメントと処理命令はJSONに対応するものがないため省略され、メモが表示されます。DOCTYPEはスキップされ、そこで宣言されたエンティティは展開されません。

`<p>Hello <b>world</b></p>` のような混在コンテンツは?

子要素は通常どおりキーになり、周りのテキストは #text にまとめられます。JSONでは要素の間のどこにテキストがあったかを記録できないため、その順序は失われます。その場合、変換ツールがメモを追加します。

変換はサーバーで行われますか?

いいえ。XMLの解析と生成はブラウザ内で行われ、貼り付けたり開いたりした内容はアップロードされません。再読み込みしても消えないように、貼り付けた内容は消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。