JSON vs XML

プログラムどうしを話させるなら JSON、スキーマを守らせたいなら XML です。

JSONが向いている場面

API、設定ファイル、JavaScript が読むものすべてに JSON。

XMLが向いている場面

業界がすでにそう求めている場所——請求、行政、出版——か、スキーマに本当に検証させたい場合は XML。

見落とされがちなところ

往復は対称ではありません。XML は属性と要素を区別し、JSON にその区別がないので、変換して戻すと同じファイルにはなりません。

JSONからXMLに乗り換えるとき

残るもの

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

結果を開く

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

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

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

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

XMLからJSONに戻すとき

失われるもの

コメントは引き継がれません。XML ではファイルに説明を書き添えられますが、JSON にはコメントの構文そのものがないので、説明の行はすべて落ちます。そして困るのは、まさにコメントが書かれるようなファイル——誰かが引き継ぐ設定ファイルです。

残るもの

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

結果を開く

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

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

XML は W3C の形式です(1998 年に登場)。 XML 1.0 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

JSON は 2001 年から使われています。規定は RFC 8259 です。Visual Studio Code、jq、Postmanがこの形式を読めます。

並べて比べる

JSONとXMLを項目ごとに比較 — 何を保持し、その代償は何か。
JSONXML
Full nameJavaScript Object NotationExtensible Markup Language
拡張子.json.xml
メディアタイプapplication/jsonapplication/xml
圧縮方式無圧縮無圧縮
当サイトで書き出せるかはいはい

決まりましたか。ここで変換できます

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