UltKit

JSONをXMLに変換

XMLしか受け付けないソフトウェアにJSONデータを渡せます。各レコードは要素に、各キーは子タグになり、文書全体は名前を自由に決められる1つのルート要素の下に収まります。

データ変換

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

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

出力

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

このツールの使い方

  1. 1

    JSONをアップロード

    APIレスポンスなどの .json ファイル、またはJSON Linesファイルを追加します。最大20ファイル、1ファイルあたり95 MBまで対応しています。

  2. 2

    ルート要素に名前を付ける

    詳細設定を開き、XMLルートタグに外側のタグ名を入力します(初期値は rows)。インデント付きで出力するには、整形して出力をオンのままにします。

  3. 3

    変換して取り込む

    XMLに変換を押してダウンロードします。受け取り側システムのスキーマが別のタグ名を求める場合は、タグ名を書き換えてください。

多くのAPIがJSONに移行した今もJSONをXMLに変換する理由

Web APIではJSONが主流になりました。現行の仕様である2017年のRFC 8259は、数ページに収まります。XMLはそれより古く、1998年2月からW3C勧告となっており、銀行、電子インボイス、出版、行政への報告など、取り決めが厳格な分野では使われ続けています。

そのため、この変換が必要になるのは、たいてい金銭や規制が絡む場面です。たとえば、開発者がJSON APIから注文を取得し、取引先のSOAPサービスへ送信する場合があります。ショップが商品をJSONで管理していても、比較サイトがXMLフィードを求める場合もあります。翻訳をJSONで保存しているチームが、Androidのビルドで strings.xml を求められることもあります。変換先がスプレッドシートなら、JSONからCSVへの変換で要素ではなく行形式のデータが得られます。

今もXMLでの入力を求めるシステム

JSON XML変換が使われる場面
機関要件出典
SOAP WebサービスすべてのリクエストはXMLエンベロープで送信されます。SOAP 1.2は2003年にW3C勧告となりました—
Google Merchant Center商品フィードは、区切り文字形式のテキストのほか、RSS 2.0またはAtom 1.0のXMLでも受け付けられます—
Peppol電子インボイス請求書は、Peppol BIS Billing 3.0の規則に従い、UBL 2.1のXMLドキュメントとして交換されます—
Androidアプリテキストリソースと翻訳は res/values/strings.xml に置かれます—

JSONをXMLに変換する例:2つの商品

[{"sku":"A-17","price":12.5,"tags":["新着","セール"]}, {"sku":"B-02","price":8}] から作成したXML
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <sku>A-17</sku>
    <price>12.5</price>
    <tags>新着</tags>
    <tags>セール</tags>
  </row>
  <row>
    <sku>B-02</sku>
    <price>8</price>
  </row>
</rows>

誤解JSONとXMLは1対1で対応するため、変換は正確です。

事実XMLには、JSONにない属性、混合コンテンツ、名前空間があります。逆にJSONには、XMLにないデータ型があります。コンバーターはどちらかの対応方式を選ぶ必要があり、このツールではすべて子要素で表現します。

誤解数値の12.5は、XMLでも数値のままです。

事実XMLが保持するのは文字です。12.5は、スキーマや読み込むプログラムが小数だと定めるまでは、単なるテキストです。

JSONがXMLになると何が変わるか

確認しておきたい点が3つあります。まず、型はテキストに平坦化されるため、true、null、0はすべて文字として出力されます。null は通常、空の要素になります。次に、XMLの名前として使えないキーは変更が必要です。タグは数字で始められず、スペースも含められません。最後に、すべての値がキーを繰り返す開始タグと終了タグで囲まれるため、出力サイズは大きくなります。

失われるものは、ほかにありません。入れ子は入れ子の要素として残り、レコードの順序も保たれ、ファイルはUTF-8で書き出されるためUnicodeの文字もそのままです。YAMLからSQLまで、構造化データ向けのその他の変換はデータ変換のページで確認できます。

JSONとXMLの形式に関する基本情報

JSON

JavaScriptオブジェクト表記

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

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

XML

Extensible Markup Language

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

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

JSONからXMLへの変換が必要になるのは、新しい形式のデータを古い取り決めに合わせる場面です。たとえば、SOAPエンドポイント、商品フィード、電子インボイスのネットワーク、波括弧ではなく要素を読み取る前提で作られた設定ファイルなどがあります。

JSON XML変換に関するよくある質問

JSONが配列で始まるのに、なぜXMLにはルート要素が1つ必要なのですか?

XML 1.0の仕様では、整形式のドキュメントには、他のすべてを含む要素がちょうど1つ必要です。JSONの配列にはそのような外枠がないため、コンバーターがXMLルートタグで指定した名前の要素を追加し、配列の各項目を <row> としてその中に配置します。

「2024 total」や「unit price」のようなJSONのキーはどうなりますか?

どちらもXMLの要素名としては使えません。名前は数字で始められず、スペースも含められないためです。変換前にJSON側でキー名を変更してください。受け取り側のスキーマが使うタグ名そのものにしておくと、出力後の修正が不要になります。

レコード内のJSON配列はXMLでどのように書かれますか?

項目ごとに同じ要素を繰り返す形になります。3つの文字列を持つ tags 配列は、3つの <tags> 要素が連続する形に変換されます。空の配列は何も出力されません。これは、JSONからXMLへの変換で情報が失われる数少ない場面の1つです。

変換したXMLは取引先のXSD検証を通りますか?

構造がすでに一致している場合のみです。コンバーターが出力するのは、JSONを忠実に写した整形式のXMLで、取引先が求める要素の順序、名前空間、属性までは判断できません。出力結果を出発点として、スキーマに合わせて調整してください。

XMLからJSONに戻すことはできますか?

XMLからJSONへの変換をご利用ください。ただし、往復すると小さな違いが出ます。XMLはすべての値をテキストとして保持するため、JSONで数値や true だったものが文字列として戻ることがあります。