JSON を XML に変換

ここで JSON を XML に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 可逆 何も捨てられません。XMLはJSONが持っていたものをそのまま保持します。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

ルート要素はどう決まるか

XML の文書には、いちばん外側の要素がひとつだけ必要です。JSON にはその名前がないことが多いので、規則はこうなっています。オブジェクトがキーをひとつだけ持ち、その値が配列でなければ、そのキーがルートになります。それ以外——キーが複数ある場合や、値が配列である場合——は root という要素で全体を包みます。

値が配列である一つキーは例外です。{"items":[1,2]} をそのままルートにすると、同じ要素が二回並ぶだけで外側の枠がなくなってしまうので、代わりに root で包んでから中に繰り返しを置きます。渡す JSON をあらかじめ請求書や注文といった名前のキーひとつで包んでおけば、望みどおりの要素名で出力されます。

配列は同じ要素の繰り返しになる

XML には配列という型がありません。代わりに、同じタグを親の中に何度も書くことでリストを表します。tags というキーが 3 つの値を持つ配列なら、<tags> が 3 つ並びます。トップレベルが配列の場合は、root の中に item が繰り返されます。

これは XML のほうが表現しやすい珍しい場面です。同じ配列を CSV にすると、列を増やすか、値を連結するか、行を増やすかを選ばなければなりません。XML では繰り返しがそのまま自然な形なので、注文明細が 5 行あっても迷う場所がありません。

@ を付けたキーは属性になる

XML には値の持たせ方が 2 通りあります。タグの中の属性と、子要素です。JSON には 1 通りしかないので、ここでは @ から始まるキーを属性として書き出す約束にしています。{"@id":7} は <thing id="7"> になり、#text という名前のキーはその要素自身の文字列になります。

この約束は、このサイトが XML を読み込むときに使う規則と同じです。XML を JSON に変換し、編集してから XML に戻しても、属性は属性のまま残ります。受け取り側が id を属性として期待しているなら、JSON 側のキーを @id にしておくだけで済みます。

要素名として使えない文字は書き換えられる

JSON のキーには空白でも絵文字でも先頭が数字でも何でも入りますが、XML の要素名にはできません。ここでは失敗させる代わりに、あえて狭い許容範囲で書き換えます。残るのは英数字とアンダースコア、ピリオド、ハイフンだけで、それ以外はアンダースコアに置き換わり、先頭が数字なら前にアンダースコアが付きます。"2024 report" は _2024_report になります。

この範囲は XML 1.0 が本来許している範囲より狭いことに注意してください。アクセント付きの文字やギリシャ文字、キリル文字、そして日本語もここでは残りません。café は caf_ になり、「名前」は __ になります。ASCII 以外のキーを使っている場合は、値ではなく名前のほうが失われるので、変換前にキーを付け替えておくのが確実です。

名前空間やスキーマは JSON からは生まれない

XML には名前空間、XSD スキーマ、DTD、CDATA セクション、電子署名など、JSON には対応するものがない仕組みが数多くあります。ここで生成される文書は「整形式」ではありますが「妥当」であるとは限りません。受け取り側が XSD で検証しているなら、ルート要素に名前空間の宣言を足す必要が出てくるかもしれません。

XSD の多くは要素の並び順にも意味を持たせていますが、JSON のオブジェクトの順序はそこまで厳密な意味を持ちません。こうした差は、変換後に手で直すか、小さな XSLT のステップを挟むかで解決するのが現実的です。

エスケープと null の扱い

アンパサンドや山括弧、二重引用符は書き出す際にエスケープされるので、値の中に "Tom & Jerry <special>" のような文字列があっても文書が壊れることはありません。それ以外の文字、アポストロフィも含めて非 ASCII の文字も、UTF-8 としてそのまま書き出されます。

JSON の null は、開始タグと終了タグの間に何もない空の要素になります。これは XML が用意している xsi:nil とは別の選択であり、スキーマによっては xsi:nil を要求することもあります。その場合は出力後に置き換えが必要です。

XML 宣言は書かれない

出力は 2 スペースのインデントで、1 行に 1 要素という読みやすい形になりますが、<?xml version="1.0"?> という宣言行は含まれません。XML 1.0 ではこの宣言は省略でき、既定の文字コードは UTF-8 なので、宣言がなくても整形式としては問題ありません。

ただし、古い取り込みシステムの中には、この行がないとわかりにくいエラーで止まってしまうものもあります。行を 1 本足すだけで済むので、初めて送信する前に相手の仕様を確認しておく価値はあります。

ファイルはブラウザーから出ません

変換はこのタブの中で JavaScript として動きます。ブラウザーが JSON を読み取り、小さな書き出し処理が XML を作るだけで、どこにもファイルを運ぶリクエストは発生しません。登録も待ち行列も 1 日あたりの上限もなく、無料で 100 MB まで扱えます。

XML に変換しなければならない支払いや申請、顧客情報は、そもそも見知らぬウェブサービスに貼り付けたくない種類のデータであることが多いはずです。ここでは何も送信されないので、その心配自体がありません。

JSON を XML に変換する手順

  1. お手元の JSON ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に XML を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった XML ファイル をダウンロードします。

JSON と XML——何が変わるか

JSONとXMLの比較
JSONXML
正式名称JavaScript Object NotationExtensible Markup Language
拡張子.json.xml
メディアタイプapplication/jsonapplication/xml
最初の公開20011998
発行元W3C
仕様RFC 8259XML 1.0
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるかすべてのブラウザすべてのブラウザ
代わりに検討される形式YAML, NDJSONYAML

残るもの

失われるものはありません。JSON も XML も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

結果を開く

Visual Studio Codeは JSON と XML のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

どちらの形式が何のためのものか

JSON は 2001 年に登場しました。 RFC 8259 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

XML は W3C の形式で、1998 年から使われています。規定は XML 1.0 です。Visual Studio CodeとoXygen XML Editorがこの形式を読めます。

JSON から XML:よくある質問

JSON ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

JSON から XML への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

JSON を XML に変換すると品質は落ちますか。

いいえ。XML は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。

JSON から XML への変換は可逆ですか。

失われるものはありません。JSON も XML も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

どちらが必要か決まっていませんか

このページは一方をもう一方に変換します。変換ではなく選ぶ段階なら、JSON vs XMLがどちらを何に使うべきか、それぞれ何が苦手かに答えます。

これらのフォーマットについて