JSONとは

JSONは、人間にとって読み書きが容易であり、コンピュータにとって解析や生成が容易な、属性と値のペアを用いてデータを構造化するための軽量なデータ交換フォーマットのことです。

JSONの概要と設計思想

JSON(JavaScript Object Notation、ジャバスクリプト・オブジェクト記法)は、もともとJavaScriptのオブジェクトリテラル表記法に由来していますが、そのシンプルさと高い汎用性から、現在ではプログラミング言語に依存しない世界共通のデータ交換標準として広く利用されています。

XMLに代わるデータ形式として急速に普及し、特にWebアプリケーションにおいて、クライアント(Webブラウザやモバイルアプリ)とサーバー間でデータをやり取りするAPI通信の主要な形式となっています。

JSONの設計思想は、以下のような特徴に集約されます。

  • 軽量性: 冗長なタグやスキーマ定義が不要なため、XMLと比較してファイルサイズが小さく、通信オーバーヘッドを削減できます。
  • 構造化: データを配列(リスト)とオブジェクト(辞書/連想配列)の形で階層的に表現できます。
  • プログラミング言語との親和性: ほとんどのモダンなプログラミング言語(Python, Java, C#, PHPなど)には、JSONデータを簡単にオブジェクトや構造体に変換(デシリアライズ)し、逆に変換(シリアライズ)するための標準ライブラリが用意されています。

主な目的は、システム間のデータの受け渡しを、シンプルで、高速で、移植性の高いテキスト形式で実現することです。

JSONの基本構造とデータ型

JSONは、以下の2つの構造と、限定された基本的なデータ型のみを使用してデータを表現します。

1. オブジェクト(Object)

  • 表現: 波括弧 {} で囲まれ、順序を持たない属性と値のペア(キーと値のペア)の集合を表現します。
  • キー: 常に文字列(二重引用符で囲む)である必要があります。
  • : JSONで許容される任意のデータ型(文字列、数値、配列、別のオブジェクトなど)が使用できます。
  • : {"名前": "山田", "年齢": 30}

2. 配列(Array)

  • 表現: 角括弧 [] で囲まれ、順序を持つ値のリストを表現します。
  • : 配列内の各要素は、異なるデータ型であっても構いません。
  • : [10, "リンゴ", false, {"地域": "東京"}]

3. データ型(Value Types)

JSONがサポートするデータ型は以下の6種類です。

データ型表現特徴
String“文字列”二重引用符で囲まれたUnicode文字の集合。
Number123 または 1.23整数または浮動小数点数。
Booleantrue または false論理値。
Nullnull値が存在しないことを示す。
Object{}キーと値のペアの集合(前述)。
Array[]順序付きの値のリスト(前述)。
JSONがサポートするデータ型

JSONの応用とXMLとの比較

応用分野

  • Web API(REST API): サーバーとクライアント間でデータをやり取りする際の標準フォーマットとして広く利用されています。
  • 設定ファイル: 軽量で構造化が容易なため、アプリケーションやサービスの構成ファイルを記述するのにも適しています。
  • ログデータ: 複雑なイベントログを構造化された形式で記録するために使用されます。

XMLからの移行

JSONは、かつてデータ交換の主流であったXML(Extensible Markup Language)と比較して、以下のような明確な利点から支持されています。

  • 簡潔さ: XMLのような終了タグが不要であるため、人間にとっての可読性が高く、ファイルサイズが小さくなります。
  • データ構造との直接的な対応: JSONのオブジェクトと配列の構造は、多くのプログラミング言語が持つ辞書型/連想配列型とリスト型/配列型に直接対応しており、パース(解析)が非常に容易です。

これらの理由から、特にWebサービスやモバイル開発の領域では、JSONが現在の標準的なデータ交換フォーマットとしての地位を確立しています。

関連用語

データ構造 | 今更聞けないIT用語集
CSV | 今更聞けないIT用語集
ソフトウェアエンジニアリング

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。