JSON・XML変換ツール
ブラウザ内で動作し、何もアップロードされません
JSONをXMLに、XMLをJSONに変換します。属性、繰り返し要素、名前空間は明確なルールで扱います。
Input · JSON
Output · XML
Converted XML appears here as you type.
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ツールバーで JSON → XML か XML → JSON を選びます。データを Input パネルに貼り付けるか、ファイルをドロップするか、Ctrl+O で開きます(最大5 MB)。
- 2結果は Output パネルに表示され、入力に合わせて更新されます。出力の上のメモには、キーの名前変更やコメントの省略など、変換で変更した点が表示されます。
- 3XML → JSON では、Always arrays を選ぶとすべての子要素が配列になり(コードから読みやすくなります)、Numbers を選ぶと数値と真偽値が変換されます。JSON → XML では、Root name と、XML宣言で始めるかどうかを設定します。
- 4入力が無効な場合は、出力パネルに行と列が表示されます。F8でカーソルを問題の箇所に移動できます。
- 5Swap(Shift+Alt+S)は出力を入力に移して方向を反転させるので、往復変換の結果を確認できます。結果をコピーするか、Ctrl+S でダウンロードします。
トラブルシューティング
- 3行目で開いた要素を閉じる </item> が必要です
- タグは開いたのと逆の順番で、同じ名前・同じ大文字小文字で閉じる必要があります。メッセージに出ている要素の終了タグが抜けていないか、綴りが間違っていないかを確認してください。
- 単独の
&は&と書く必要があります - XMLのテキストや属性では、
&はエンティティの始まりを表します。アンパサンドは&、<は<と書くか、テキストを<![CDATA[ ... ]]>で囲んでください。 - 不明なエンティティ
- 定義されているのは、XMLの5つのエンティティ(
<>&"')と のような文字参照だけです。 はHTMLのものなので、代わりに を使ってください。 - 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 は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。