UltKit

XMLをJSONに変換

SOAPレスポンス、RSSフィード、設定ファイル、旧システムのエクスポートデータを、JavaScriptやPython、ノーコードツールがそのまま読めるJSONに移せます。パーサーを自作する必要はありません。

データ変換

またはCSV, TSV, TXT … ファイルをここにドロップ ·

1ファイルあたり最大95 MB· 最大20ファイルまで· 30分後に削除

出力

ファイルは当社のサーバーで処理され、30分後に削除されます。

このツールの使い方

  1. 1

    XMLをアップロード

    .xmlファイルをアップロード欄にドロップします。1回に最大20ファイル、1ファイルあたり95 MBまで対応しています。各ファイルは個別に変換されます。

  2. 2

    整形またはコンパクトを選択

    整形して出力はオンになっており、JSONにインデントが付いて読みやすく、コードレビューにも向いています。APIのペイロード用に1行で最小サイズの出力にしたい場合は、詳細設定でオフにしてください。

  3. 3

    変換してJSONを使う

    JSONに変換 →を押して.jsonファイルをダウンロードし、コードやツールに読み込みます。

XMLをアップロードしてJSONに変換 →を押すと、要素はキーに、繰り返し要素は配列になり、属性は @ 付きのキーとして保持されるため、タグ内の情報は失われません。

XMLをJSONに変換する必要があるのはこんな方

XML 1.0は1998年2月にW3C勧告となり、その後10年ほどはシステム同士が通信する標準的な手段でした。SOAP Webサービス、RSSやAtomフィード、Officeドキュメント、銀行のメッセージ、商品カタログなどに使われ、今も稼働しているシステムは多くあります。RFC 8259で規定されたJSONは、JavaScriptがパーサーライブラリなしで読め、ほとんどの言語でリストや辞書にそのまま対応するため、新しいWeb APIの主流になりました。

そのため、変換する人の多くは2つの時代の橋渡しをしています。フロントエンド開発者は、決済や配送事業者のSOAPレスポンスを受け取り、単純なオブジェクトにしたいと考えます。ZapierやMakeで自動化を組む人は、仕入先のXMLフィードをJSONのほうが扱いやすいフローに取り込みます。データエンジニアは古いJavaアプリケーションの設定ファイルを移行し、学生は授業の課題でRSSフィードをJSONとして使います。どの場合も、山括弧のない同じ構造が求められています。

XMLをJSONに変換:タグ・属性・テキストの対応

XML入力:属性が1つ、顧客が1人、商品が2つの注文
<order id="A-77">
  <customer>山本 玲奈</customer>
  <total currency="EUR">59.90</total>
  <item sku="0042">デスクライト</item>
  <item sku="0108">LED電球</item>
</order>
上の注文の各部分がJSONでどう表れるか
XMLの構成要素例JSONの結果
ルート要素<order>最上位キー order
属性id="A-77""@id": "A-77"
テキストのみの要素<customer>"customer": "山本 玲奈"
テキストと属性<total currency="EUR">59.90</total>{"@currency": "EUR", "#text": "59.90"}
繰り返し要素<item>タグが2つ"item": [ … , … ] の配列
コメント<!-- note -->削除されます。JSONにはコメントがありません

XML

Extensible Markup Language

XML は、1998 年に W3C が公開した、構造化データ向けのマークアップ言語です。属性を持つタグを入れ子にして記述し、スキーマ、名前空間、検証に対応しているため、複雑な文書でも堅牢に扱えます。RSS フィード、SVG、Office 文書、サイトマップ、企業や行政の多くのデータ交換の基盤になっています。JSON に比べると冗長ですが、どのプログラミング言語でも、また多くの表計算ツールでも読み込めます。

圧縮方式
–
透過
–
アニメーション
–
登場時期
1998 · W3C
XML 変換

JSON

JavaScriptオブジェクト表記

JSONは構造化データ用の軽量なテキスト形式で、2000年代初めにDouglas Crockfordが広め、RFC 8259とECMA-404として標準化されました。オブジェクト、配列、文字列、数値、真偽値、nullを、シンプルで読みやすい構文で表現します。ウェブAPI、設定ファイル、ほぼあらゆるプログラミング言語でのアプリ間のデータ交換における標準的な形式です。コメント、日付、スキーマは標準では含まれず、深くネストした大きなファイルはビューアなしでは読みにくくなります。

圧縮方式
–
透過
–
アニメーション
–
登場時期
2001 · Douglas Crockford
JSON 変換

古いシステムや企業システムのデータをWebアプリ、スクリプト、自動化ツールに渡す必要があるとき、XMLをJSONに変換します。JSONはJavaScriptで標準的に解析でき、Pythonの辞書にもそのまま対応します。

JSONでは表現できないXMLの機能

どちらの形式もツリーを表しますが、XMLにはJSONにない要素があります。1999年にW3Cが定義した名前空間により、1つのドキュメントで soap: や xsi: などの語彙を混在させられますが、JSONではキー名の一部としてのみ残ります。コメントや処理命令は格納先がないため削除されます。混在コンテンツ、つまりXHTMLの段落に太字の語が含まれるようにテキストと子タグが交互に並ぶ構造は、XMLでは有効でもJSONでは扱いにくくなります。そのため文書型のXMLは、JSONよりHTMLやMarkdownへの変換が向いています。

見落としやすいのが順序です。XMLは兄弟要素の順序を保持し、スキーマがそれに依存することもありますが、JSONオブジェクトのキーは規格上、順序が保証されません。繰り返し要素は配列の中で順序が保たれるため、実際のデータの多くはこれで足ります。XMLがコードではなくスプレッドシートに入れたいフラットなレコード一覧なら、XMLをExcelに変換で行と列として直接得られ、XMLをCSVに変換ならデータベースへのインポート用ファイルになります。

XMLからJSONへの変換に関するよくある質問

同じ要素が、あるファイルでは配列、別のファイルではオブジェクトになるのはなぜですか?

変換ツールは、ドキュメントに書かれている内容しか見ることができません。注文に item タグが3つあれば items は配列になり、1つしかなければ繰り返しがないため単一のオブジェクトになります。JSONを読み込むコードは両方の形に対応するか、ループの前に単一のオブジェクトを配列で包むようにしてください。

XMLの属性はJSONでどのように書かれますか?

各属性は名前の前に @ を付けたキーになり、currency="EUR" は "@currency": "EUR" に変換されます。要素に属性とテキストの両方がある場合、テキストは属性の隣の #text キーに入ります。この規則により、属性と子要素が同じ名前でも衝突しません。

XML内の数値はJSONの数値型に変換されますか?

XMLには独自のデータ型がなく、タグの中では 42 と "42" は同じに見えます。そのため値は文字列として出力され、郵便番号や 007 のようなIDも安全に保たれます。数値が必要な項目は、パース後にコード側で数値に変換してください。

soap:Envelopeのような名前空間プレフィックスはどうなりますか?

プレフィックスはキー名の一部として残るため、エンベロープは soap:Envelope、名前空間宣言は @xmlns:soap キーになります。異なる語彙の要素を区別できる形です。1つの語彙だけを扱う場合は、コード側でプレフィックスを取り除いてください。

変換後のJSONをXMLに戻せますか?

はい、JSONをXMLに変換で可能です。同じ @ と #text の規則に従い、属性は属性として戻ります。コメントと元のインデントはJSONに含まれていないため、復元されません。