
JSONとは?XMLより優れているのでしょうか?
最終更新日:
JSONの開発者の一人であるDouglas Crockfordは、次のように説明しています。「JSON(JavaScript Object Notation)は、軽量なデータ交換形式です。人間にとって読み書きしやすく、コンピューターにとっても解析や生成が容易です。」
JSONはJavaScriptから生まれましたが、主要なプログラミング言語でも、標準機能またはライブラリを通じてサポートされています。JSONはウェブ上で広く普及しています。現在では、ほぼすべての公開ウェブサービスと一部の非公開ウェブサービスで使われています。最も一般的な用途は、ウェブサーバーとクライアント間の情報交換です。その人気の高さから、MySQL、PostgreSQL、MongoDB、Neo4jなど、多くのデータベースがJSONに対応しています。
それでは、JSONの構造、使う理由、XMLと比べた利点、欠点、そして適した用途を詳しく見ていきましょう。
JSONファイルの構造
専門用語をなるべく使わずに説明すると、JSONデータは、キーと値を対応付けたプレーンテキストファイルに保存されます。人間が読める形式なので、簡単に開いて内容を確認できます。どの言語でもプレーンテキストを処理して読み取れるため、JSONは異なる環境間でも利用できます。テキストベースで軽量なので、ウェブ上でデータを簡単かつ高速に送信できます。大量のデータを表示・送信するウェブサービスには、JSONが理想的な選択肢です。
JSONの主な代替形式はXMLです。XMLはタグ構造を使うため、少し複雑になります。どのプログラミング言語にもXMLパーサーがあるため、主にデータ交換に使われています。さまざまなスキーマでXMLを検証できるので、オンラインストアなどの電子商取引、銀行業務、産業システムの連携などに適しています。
ただし、XMLはプログラミング言語ではなくマークアップ言語であり、データはツリー構造で保存される点に注意が必要です。そのため、データ量が大きくなり、送信速度も遅くなります。
XMLをJavaScriptオブジェクトに変換するには、カスタマイズも含めて数百行ものコードを扱う必要があります。一方、JSONをJavaScriptオブジェクトに変換するなら、コードはわずか1行で済みます。
うれしいことに、Filestarなら簡単にXMLをJSONに変換でき、作業が楽になります。また、同じように簡単にJSONをXMLに変換することもできます。

JSONを使う理由
· JavaScriptエンジンによってJSONを高速に解析できます。データサイズも小さいため、データ転送が速くなります。
· また、JSONには冗長なタグや空のデータタグがないため、シンプルで読みやすく、コンパクトです。一方で、配列、真偽値、数値、null、文字列、基本的なオブジェクトには対応しています。
· JSONはASCIIとUTFの両方のエンコーディングに対応しています。
· JSONはJSONPを使う場合を除き、常により安全に解析できます。一方、XMLは攻撃を受けやすい形式です。
· JSONとAJAXを組み合わせると、データ処理が非常に高速になります。
JSONの制限
JSONは柔軟なデータ形式で、多くのプログラミング言語で使えますが、いくつかの欠点も見逃せません。
1. スキーマがないことは、利点でもあり欠点でもあります。好きな形式で自由にデータを表現できる一方で、誤った構造のデータをうっかり作ってしまいやすくなります。
2. 使えるデータ型は、IEEE-754倍精度の1種類だけです。専門的な言い方ですが、簡単に言えば、多くのプログラミング言語で用意されている、細かな違いを表現できる多様な数値型は使えないということです。
3. また、追加の説明が必要なフィールドにコメントを付けられないため、誤解が生じる可能性があります。
4. 確かにJSONはXMLより記述が簡潔ですが、大量のデータを扱う場合や特殊なデータ交換の用途では、より効率的なデータ形式を使うほうがよいでしょう。
適した用途:
モバイルアプリやブラウザーと通信するプログラムを書くときは、JSONを使いましょう。XMLは時代遅れの選択肢になります。フロントエンドでは敬遠されがちで、獲得したいモバイル開発の人材との相性もよくありません。
サーバー間の通信でもJSONは役立つ場合がありますが、Apache ThriftやAvroなどのシリアライズ用フレームワークのほうが適しています。
JSONはすべてのデータベースでサポートされていますが、リレーショナルデータベースでは、できるだけ使わないのが基本です。リレーショナルデータベースは構造化データを扱うため、JSONオブジェクトの内部を検索すると、パフォーマンスの問題が発生することがあります。
まとめ
要するに、JSONはブラウザー、ウェブサーバー、モバイルアプリ間でデータを送信するための事実上の標準形式です。柔軟でシンプルなので、読みやすく、理解や操作も簡単です。JSONなら、検証や意味づけについて心配する必要はありません。
