XML ↔ JSON

JSON または XML を貼り付け。方向は自動判定。出力をクリックでコピー。

XML ↔ JSONについて

SOAP エンベロープ、sitemap 断片、レガシー API は XML が多く、フロントのデバッグや jq は JSON 向きです。{ または [ で始めれば XML(ルート要素付き)、< で始めればタグ名をキーにしたネスト JSON になります。

属性とテキストノードはツリーに残るため、メタデータを落とさず構造を確認できます。JSON→XML ではルートラッパーとインデント付きタグが生成され、diff や XML 必須のゲートウェイ向けの草稿に使えます。

できること

方向の自動判定

JSON はルート要素付きのインデント XML に、XML はタグ名キーのネスト JSON に変換します。先頭の非空白文字で方向が決まります。

タグ・属性・テキスト

  1. 要素名は JSON オブジェクトのキーに。属性と子がある場合は単一文字列に潰さずフィールド化します。
  2. id、xmlns、xsi:type など属性は同一ノードに残り、XPath なしで読めます。
  3. 同名の兄弟タグは 1 キー配下の JSON 配列にまとまります。

JSON → XML の名前

JSON キーは合法な XML タグ名になる必要があり、空白や記号は置換され、数字だけのキーには接頭辞が付くことがあります。XSD/WSDL と必ず照合してください。

適用範囲

  • 高度な名前空間、CDATA 完全保持、複雑な mixed content ルールは対象外です。
  • 配列か単一オブジェクトかはヒューリスティックで、XSD の choice とは一致しません。
  • 巨大ペーストはメモリに載せる必要があり、多 MB 級は CLI のストリーミング向きです。

よくある使い方

SOAP / XML API

SOAP を JSON 化して DevTools や Node スクリプトで Body フィールドを抜き、環境間 diff する。各リポジトリに XML スタックを常備しなくてよい。

設定と sitemap

sitemap や Spring XML 断片を JSON で diff。ベンダー JSON を旧ゲートウェイ用 XML に戻す。

ログの XML ペイロード

メッセージキューの XML エラーを JSON にし、jq や Grafana、チケット添付で読みやすくする。

よくある質問

変換後の JSON/XML が期待と違うのはなぜ?
JSON キーは XML 要素名に正規化され、特殊文字や数字のみのキーは加工されます。契約書どおりのフィールドか、必須属性が欠けていないか確認してください。
XML → JSON で属性は残りますか?
はい。要素の属性は子タグ・テキストと同じノードオブジェクトに載り、innerText だけにならないようにしています。
同じタグ名が複数ある場合は?
最初は単一値、兄弟が増えるとそのキー配下が JSON 配列になります。
巨大 XML ファイルは扱えますか?
ブラウザがペースト全体を一度に parse します。多メガバイト級はコマンドライン向きで、本ページはメッセージ・設定・ログ抜粋向けです。
XML を JSON にする操作は?
< で始まる XML を貼り「変換」します。ネストはオブジェクト、重複タグ名は配列になります。ツリーが合っていればコピーし、契約と照合してください。
XML 名前空間は往復しますか?
xmlns や xsi 型を第一級メタデータとして完全保持するわけではありません。WSDL 重視のサービスではデバッグ用ビューと捉え、本番の正は XML のままにしてください。