XML→JSON変換
XML形式のデータをJSONに変換します。レガシーなXML APIのレスポンスやSOAP連携、RSS/Atomフィードなどの中身を、属性は@attributes・テキストは#text・繰り返し要素は配列という規約でJSON化し、ブラウザ上だけで完結して確認できます。
使い方のヒント
- 属性を持つ要素は `@attributes` キーの中にオブジェクトとしてまとめられ、要素本来のテキストや子要素とは区別されます。
- 属性と子要素・テキストが混在する要素では、テキスト部分が `#text` キーに格納されるので、属性値と取り違えることがありません。
- 同じ名前の兄弟要素が複数回登場すると自動的に配列にまとめられます。`
- ` が3つあれば3要素の配列になり、1つだけなら単一のオブジェクトのままです。
- 属性もテキストも子要素も持たない空要素(例: `
`)は `null` に変換されます。 - `xmlns` などの名前空間プレフィックスは分離せず、`ns:tag` のような要素名としてそのままキーに使われます。
よくある質問
余談ですが ― XMLとJSONの間に「唯一の正解」がない理由
XMLとJSONの間には、CSVとJSONのような単純な行→オブジェクトの対応とは異なり、唯一絶対の変換規約が存在しません。XMLには属性・テキストノード・子要素という3種類の情報が混在できるのに対し、JSONにはキーと値の単純な対応関係しかないため、変換時に必ず何らかの取り決めが必要になります。属性をどう表現するか、テキストと子要素が同居する場合にどちらを優先するかといった点で、xml2json・xml-js・org.jsonなど主要な実装ごとに異なる規約が採用されてきました。
それでもなお開発者がXMLを扱う場面は少なくありません。SOAP形式のWeb APIや、金融・行政・医療分野の古くからのシステム間連携、RSS/Atomフィード、Androidのレイアウトファイルなど、XMLが標準フォーマットとして今も現役の領域は多岐にわたります。こうしたレガシーな仕組みから取得したデータを、モダンなJSON専用のツールチェーン(jqでの加工やJavaScriptでのオブジェクト操作など)に載せたいというニーズは根強く残っています。
本ツールが採用した `@attributes`/`#text` という規約は、記号を多用する徹底した記法までは踏み込まず、実務でよく使われるシンプルな規約を選んでいる。属性を持たない葉要素はテキストをそのまま値にするため、単純な設定値やRSSのタイトルのような一般的なケースでは扱いやすいJSONになる一方、属性が絡む要素だけ明示的に区別されるため、変換結果を見れば元がどの値だったのか一目で分かるようにしている。