JSON 入門

JSON とは?

Web で最も人気のあるデータ交換形式を理解しましょう。その構文、使用法、そしてなぜそれが最新の API の標準であるかを学びます。

定義

JSON(JavaScript Object Notation)は、軽量なデータ交換形式です。人間にとって読み書きが容易であり、マシンにとって解析や生成が容易です。JavaScript プログラミング言語、標準 ECMA-262 第 3 版(1999 年 12 月)のサブセットに基づいています。

JSON は何に使われますか?

JSON は主にサーバーと Web アプリケーション間でデータを転送するために使用され、XML の代替手段として機能します。

Web API

REST API でデータを送受信するための標準形式です。

設定ファイル

多くの最新のアプリケーション(VS Code、package.json など)は、設定の保存に JSON を使用します。

データストレージ

MongoDB や CouchDB などの NoSQL データベースは、保存に JSON ライクなドキュメントを使用します。

主な特徴

なぜ JSON はデータ交換の事実上の標準になったのでしょうか?

軽量

XML よりも冗長性が低いため、ファイルサイズが小さくなり、ネットワーク転送が高速になります。

言語に依存しない

ほぼすべてのプログラミング言語(Python、Java、C#、PHP など)でサポートされています。

自己記述的

読むだけで構造が理解しやすく、人間が読めるテキスト形式です。

ネイティブ JS サポート

追加のライブラリなしで、JavaScript エンジンで直接解析および文字列化できます。

JSON 構文

JSON は 2 つの構造に基づいています:名前と値のペアのコレクション(オブジェクト)と、値の順序付きリスト(配列)。

1

データは名前/値のペアにある

名前/値のペアは、フィールド名(二重引用符で囲む)、コロン、値で構成されます。

2

データはカンマで区切られる

各名前/値のペア、または配列内の値はカンマで区切られます。

3

波括弧はオブジェクトを保持する

オブジェクトは波括弧 {} で囲まれます。オブジェクトには複数の名前/値のペアを含めることができます。

4

角括弧は配列を保持する

配列は角括弧 [] で囲まれます。配列には複数の値を含めることができます。

{
  "string": "Hello World",
  "number": 42,
  "boolean": true,
  "null": null,
  "object": {
    "key": "value"
  },
  "array": [
    1,
    2,
    3
  ]
}

JSON vs XML

2 つの最も人気のあるデータ交換形式を比較します。

特徴JSONXML
可読性読みやすい(スッキリ)読みにくい(冗長)
解析速度速い(ネイティブ)遅い(パーサーが必要)
データ型豊富(文字列、数値、配列...)主に文字列のみ
サイズコンパクトかさばる(終了タグ)

推奨される使用法

JSON を効果的に使用し、一般的な落とし穴を回避する方法。

UTF-8 エンコーディングを使用

システム間の互換性を確保するために、常に JSON データを UTF-8 でエンコードしてください。

日付には ISO 8601 を使用

JSON には日付型がありません。ISO 8601 文字列(例:"2023-01-01T12:00:00Z")を使用してください。

末尾のカンマを避ける

標準 JSON では末尾のカンマは許可されていません。解析エラーの原因になります。

キーにはキャメルケースを使用

慣例として、一貫性を保つために JSON キーにはキャメルケース(例:"userName")を使用します。

よくある質問

JSON は JavaScript 専用ですか?

いいえ。JSON は JavaScript から派生したものですが、言語に依存しないデータ形式です。JSON データを解析および生成するためのコードは、多くのプログラミング言語で容易に利用できます。

JSON はどのデータ型をサポートしていますか?

JSON は、文字列 (String)、数値 (Number)、ブール値 (Boolean)、Null、オブジェクト (Object)、および配列 (Array) をサポートしています。

なぜ XML ではなく JSON を使用するのですか?

JSON は XML よりも軽量で、読みやすく、解析が高速です。帯域幅の使用量が少なく、JavaScript とネイティブに連携するため、Web アプリケーションに最適です。