分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ここで JSON を XML に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
JSON から XML
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 以外のキーを使っている場合は、値ではなく名前のほうが失われるので、変換前にキーを付け替えておくのが確実です。
XML には名前空間、XSD スキーマ、DTD、CDATA セクション、電子署名など、JSON には対応するものがない仕組みが数多くあります。ここで生成される文書は「整形式」ではありますが「妥当」であるとは限りません。受け取り側が XSD で検証しているなら、ルート要素に名前空間の宣言を足す必要が出てくるかもしれません。
XSD の多くは要素の並び順にも意味を持たせていますが、JSON のオブジェクトの順序はそこまで厳密な意味を持ちません。こうした差は、変換後に手で直すか、小さな XSLT のステップを挟むかで解決するのが現実的です。
アンパサンドや山括弧、二重引用符は書き出す際にエスケープされるので、値の中に "Tom & Jerry <special>" のような文字列があっても文書が壊れることはありません。それ以外の文字、アポストロフィも含めて非 ASCII の文字も、UTF-8 としてそのまま書き出されます。
JSON の null は、開始タグと終了タグの間に何もない空の要素になります。これは XML が用意している xsi:nil とは別の選択であり、スキーマによっては xsi:nil を要求することもあります。その場合は出力後に置き換えが必要です。
出力は 2 スペースのインデントで、1 行に 1 要素という読みやすい形になりますが、<?xml version="1.0"?> という宣言行は含まれません。XML 1.0 ではこの宣言は省略でき、既定の文字コードは UTF-8 なので、宣言がなくても整形式としては問題ありません。
ただし、古い取り込みシステムの中には、この行がないとわかりにくいエラーで止まってしまうものもあります。行を 1 本足すだけで済むので、初めて送信する前に相手の仕様を確認しておく価値はあります。
変換はこのタブの中で JavaScript として動きます。ブラウザーが JSON を読み取り、小さな書き出し処理が XML を作るだけで、どこにもファイルを運ぶリクエストは発生しません。登録も待ち行列も 1 日あたりの上限もなく、無料で 100 MB まで扱えます。
XML に変換しなければならない支払いや申請、顧客情報は、そもそも見知らぬウェブサービスに貼り付けたくない種類のデータであることが多いはずです。ここでは何も送信されないので、その心配自体がありません。
| JSON | XML | |
|---|---|---|
| 正式名称 | JavaScript Object Notation | Extensible Markup Language |
| 拡張子 | .json | .xml |
| メディアタイプ | application/json | application/xml |
| 最初の公開 | 2001 | 1998 |
| 発行元 | — | W3C |
| 仕様 | RFC 8259 | XML 1.0 |
| ライセンス | オープン標準 | オープン標準 |
| 現在の位置づけ | 現行 | 現行 |
| ブラウザで開けるか | すべてのブラウザ | すべてのブラウザ |
| 代わりに検討される形式 | YAML, NDJSON | YAML |
失われるものはありません。JSON も XML も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。
Visual Studio Codeは JSON と XML のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。
JSON は 2001 年に登場しました。 RFC 8259 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。
XML は W3C の形式で、1998 年から使われています。規定は XML 1.0 です。Visual Studio CodeとoXygen XML Editorがこの形式を読めます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
いいえ。XML は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。
失われるものはありません。JSON も XML も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。
このページは一方をもう一方に変換します。変換ではなく選ぶ段階なら、JSON vs XMLがどちらを何に使うべきか、それぞれ何が苦手かに答えます。