言語選択

XMLをJSONに変換するオンラインツール|属性や型変換オプション付き

XMLをJSONにブラウザ上で変換。属性のプレフィックス指定、数値・真偽値への自動変換、エラー表示に対応。

Mehmet Demiray 公開日 更新日
共有
XML属性を含めずにスキップします
JSON出力のフォーマットに使用するスペース数

XMLとJSONのデータモデルの違い

XMLとJSONはともにデータを構造化するためのフォーマットですが、その設計思想には明確な違いがあります。XMLは属性(attributes)と要素(elements)の両方を持ち、テキストノードやコメント、CDATAセクションなども含めることができ、非常に柔軟です。一方、JSONはシンプルなキーと値のペアで構成され、配列とオブジェクトのみをサポートします。たとえば、日本の気象庁が提供する天気予報XMLでは、<temperature unit="celsius">23</temperature>のように属性で単位を指定することが一般的です。これをJSONに変換する際には、属性をどう表現するかが課題になります。CallculationのXMLからJSON変換ツールでは、属性は「@_」というプレフィックス付きのキーとしてオブジェクト内に格納されます。これにより、元の情報が失われずにJSON形式で保持されます。ただし、XMLの混合コンテンツ(要素内にテキストと子要素が混在する構造)はJSONでは自然に表現できないため、簡略化される点に注意が必要です。このような違いを理解しておくことで、適切な変換戦略を立てられます。詳細はJSONをXMLに戻す方法もご参照ください。

XML要素からJSONへのマッピングルール

XMLからJSON変換ツールは、XMLの構造をできるだけ直感的にJSONに変換するよう設計されています。まず、同じ名前の要素が複数現れる場合、それらは自動的にJSON配列として扱われます。例えば、商品カタログXMLで<item>が3回繰り返されている場合、JSONでは"item": [ {...}, {...}, {...} ] という形になります。これは、日本のECサイトでよく見られる商品リストの処理に非常に有用です。次に、XML属性は「@_属性名」という形式でJSONオブジェクトのプロパティに変換されます。たとえば、<product id="12345" inStock="true">の場合、JSONでは{ "@_id": "12345", "@_inStock": "true" } となります。このプレフィックス方式により、要素名と属性名の衝突を避けつつ、情報を保持できます。また、空の要素や自己完結型タグ(<flag/>など)も、nullまたは空文字列として適切に処理されます。ただし、ネームスペース(xmlns)は現在のところ無視されるため、変換後のJSONには含まれません。より高度な整形が必要な場合は、JSON整形機能も併用すると便利です。

文字列から数値・真偽値への自動変換

XMLはすべてのデータを文字列として扱いますが、JSONでは数値や真偽値といった型を持つことができます。XMLからJSON変換ツールでは、「数値・真偽値を自動解析」オプションを有効にすることで、テキスト内容を適切なJSON型に変換できます。例えば、<price>2980</price>は数値¥2,980として、<available>true</available>は真偽値trueとして出力されます。この機能は、日本の小売業者が扱う商品データやセンサーからの計測値(例:温度25.5°C)を処理する際に特に役立ちます。ただし、変換は厳密に行われます。「123abc」のような文字列は数値とみなされず、そのまま文字列として保持されます。同様に、「True」や「YES」は標準的なJSONの真偽値(true/false)とは異なるため、文字列のままになります。この挙動は意図的であり、データの誤解釈を防ぐためです。必要に応じて、このオプションを切り替えて柔軟に対応できます。CSV形式のデータをJSONに変換したい場合は、CSV to JSON変換ツールもご活用ください。

変換で失われる情報とその理由

XMLからJSON変換ツールは多くのケースで正確に変換を行いますが、XMLの一部の機能はJSONの制約上、完全に再現できません。まず、XMLのネームスペース(例:xmlns:weather="http://example.com/weather")はJSONに直接対応する仕組みがないため、変換時に無視されます。次に、順序に関する情報も注意が必要です。XMLでは属性と子要素の順序が文書型定義(DTD)などで意味を持つことがありますが、JSONオブジェクトは順序なしのキー・バリュー集合であるため、この情報は失われます。さらに、混合コンテンツ(例:<p>本日は<temp>25度</temp>です。</p>)は、JSONでは自然に表現できないため、通常は子要素のみを抽出し、親要素内のテキストは無視されるか、特別なキー(例:"#text")で保持されることがあります。ただし、このツールでは混合コンテンツは簡略化され、テキスト部分は省略される傾向があります。また、XML宣言(<?xml version="1.0"?>)やコメント、CDATAセクションもJSONには含まれません。これらの制限を理解した上で、変換結果を検証することが重要です。逆方向の変換についてはJSONをXMLに変換をご覧ください。

よくある質問:XML属性のプレフィックスについて

XMLからJSON変換ツールでは、XMLの属性が「@_」というプレフィックス付きでJSONキーとして出力されます。これは、要素名と属性名が衝突するのを防ぐための一般的な慣習です。たとえば、<user id="U001" name="佐藤">というXML要素があった場合、属性nameと子要素<name>が同時に存在する可能性があります。プレフィックスを使わないと、JSONでどちらが属性か区別がつかなくなります。そのため、「@_id」や「@_name」とすることで、属性であることを明示的に示しています。この方式は、多くのXML-to-JSONライブラリ(例:JavaScriptのxml2js)でも採用されており、業界標準に近いものです。日本国内のシステム連携においても、この形式を前提とした処理を行うことで、データの整合性を保ちやすくなります。なお、このプレフィックスはオプションではなく固定ですが、変換後のJSONをJSON整形ツールで加工することで、必要に応じて後処理も可能です。

実践:SOAPレスポンスの変換は可能か?

はい、XMLからJSON変換ツールはSOAP(Simple Object Access Protocol)レスポンスの変換にも使用できます。SOAPメッセージはXMLベースであり、多くのレガシーシステム(特に日本の金融機関や官公庁システム)で今も利用されています。たとえば、銀行間送金の照会結果や税務データの取得結果など、SOAP経由で取得したXMLをこのツールでJSONに変換すれば、現代的なWebアプリケーションで扱いやすくなります。ただし、SOAP特有の構造(例:Envelope、Header、Body要素)やネームスペース(xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/")は、前述の通りJSONでは簡略化されます。特にネームスペースは無視されるため、要素名が短縮される可能性があります。また、SOAP Fault(エラーレスポンス)も同様に変換されますが、エラー内容はJSONのオブジェクトとして保持されるため、デバッグに十分使えます。変換後は、JSON整形機能を使って可読性を高めると、開発効率が向上します。ただし、完全な双方向変換(JSON→SOAP)はサポートされていないため、送信用途には別の手段が必要です。

CDATAとコメントの扱いについて

XMLからJSON変換ツールは、CDATAセクションおよびXMLコメントをJSON出力に含めません。CDATA(例:<![CDATA[<html>特殊記号を含むテキスト</html>]]>)は、XML内で特殊文字をエスケープせずに記述するための仕組みですが、JSONには同等の機能がないため、その内容は通常のテキストノードとして処理されるか、完全に無視されます。このツールでは、CDATAの内容は対応する要素のテキスト値として取り込まれます。つまり、<description><![CDATA[価格は¥1,500です]]></description>は、JSONで"description": "価格は¥1,500です" となります。一方、XMLコメント(<!-- これはコメント -->)は、JSONに変換する際に情報として不要と判断され、完全に除外されます。これは、JSON自体がコメントをサポートしていないためです。したがって、重要なメタデータをコメントに記述している場合は、事前に要素または属性に移動させておく必要があります。変換エラーが発生した場合は、画面上に明確なエラーメッセージが表示されるため、該当箇所をすぐに特定できます。他のフォーマットとの連携については、CSV to JSON変換も参考にしてください。

最もよくいただく質問

XMLの属性(attribute)は、なぜJSONに変換するときにプレフィックスが必要なのですか?

JSONにはXMLのような「属性」と「要素」の区別がありません。そのため、属性を通常のプロパティと混同しないよう、「@」などのプレフィックスを付けて明示的に区別しています。たとえば、<item id="100">は{"@id": "100"}のように変換されます。詳細は逆変換の仕組みもご参照ください。

同じタグが複数回出てくるXMLは、JSONでどう表現されますか?

同一階層に同じ名前の要素が2つ以上ある場合、XMLからJSON変換ツールは自動的に配列として処理します。たとえば、<tag>A</tag><tag>B</tag>は{"tag": ["A", "B"]}になります。要素が1つだけの場合は配列ではなく単一値として扱われます。

このツールでSOAPレスポンスを変換できますか?

はい、SOAPレスポンス(XML形式)も変換可能です。ただし、SOAPに含まれる名前空間(namespace)や特殊な構造は簡略化されるため、完全な情報保持は保証されません。特に業務システムとの連携で厳密な再現が必要な場合は、事前にサンプルデータで確認することをおすすめします。

CDATAセクションやXMLコメントは変換結果にどう反映されますか?

XMLからJSON変換ツールは、CDATAセクションの中身を通常のテキストノードとして扱い、コメントは無視します。つまり、<![CDATA[重要データ]]>は"重要データ"として出力されますが、<!-- コメント -->はJSONには含まれません。これはJSONの仕様上、コメントをサポートしていないためです。

変換時に数値や真偽値を自動判別してほしいのですが、可能ですか?

はい、「数値・真偽値を自動判別」オプションを有効にすると、テキスト内容が数字(例:"123")や真偽値(例:"true")に見える場合、JSONでは自動的に型変換されます。これにより、後続の処理で文字列として扱う必要がなくなり、開発効率が向上します。必要に応じてJSON整形と併用してください。

変換後のJSONをファイルとして保存する方法を教えてください。

変換結果が表示されたら、「ダウンロード」ボタンをクリックするだけで、.json拡張子のファイルとしてローカルに保存できます。ブラウザ上で完結する処理のため、サーバーへの送信は一切行われず、機密性の高いデータも安心してご利用いただけます。