【Web初心者】JSONの仕組みと利用方法

JSONとは

JSONとは一定の構造をしているデータ記述言語の一種で、「Javascript Object Notation」の略です。Java Script専用のデータ記述言語というわけではなく多くの言語でJSON形式のデータを扱うことができますが、JavaScriptに従った書式となっています。

JSONは、文書内にタグなどをつけてマークアップすることができませんが、配列やハッシュなどのプログラミング言語から扱いやすいデータ構造を記述できる特徴があります。

JSONデータを格納したファイルを作成する際には、「.json」の拡張子を利用します。

JSONの構造

実際のJSONファイルの例をもとに構造を確認していきます。

まず最も基本的な例で、1つの名前とその名前が示す値を格納しています。JSONファイル内のデータはデータ全体を波括弧で囲み、その中に名前と値のペアを格納していくというスタイルになっています。

名前と値はコロンで区切ります。

{"名前" : 値}

プログラミング言語では、JSONファイル内のaを指定することで、1という値を取得することができます。

{"a" : 1}

もちろんこの波括弧の中には複数の値を格納することも可能で、複数の値を格納する場合にはカンマで区切る必要があります。

aという名前を指定した場合には1が、bという名前を指定した場合には2を取得することができます。

{
 "a" : 1,
 "b" : 2
}

実際の運用の場合には、値に配列が用いられることが多く見受けられます。

言語にもよりますが、cを指定した場合には配列の中身そのもの[3,4,5]を取得し、配列の内部の1つを指定する場合にはc[0]などのように0から始まる配列の何番目の値を取得したいかを指定することで値を取得することができます。

{
"a" : 1,
"b" : 2,
"c" : [3,4,5]
}

例えば、ある学校のクラスの生徒の一覧をJSONデータにまとめて扱う場合などを想定して見てみましょう。

{
  "学校名":"○✖️小学校",
  "クラス":"1年1組",
  "クラス内人数":2,
  "生徒一覧":[
    {
      "生徒名":"石川",
      "性別":"男"
    },
    {
      "生徒名":"佐々木",
      "性別":"男"
    }
  ]
}

JSONでは、1つのデータの中で値に文字列を入れたり、数値、配列など複数のデータを格納することも可能です。また、配列の中にJSON形式のデータを入れて扱うこともでき、拡張性の高い構造となっています。

XMLとの違い

XMLとは、HTMLのようなマークアップ言語で記載されたデータ形式で、文書内の各データをタグで囲むことによりデータの持つ意味を明確にし、構造化することで扱いやすくした形式です。

ここでは同じくプログラム間で扱う機会の多いXML形式のデータとの違いについて説明していきます。

扱えるデータの種類

XMLファイルはデータ文字列をタグで囲むため、扱えるデータは文字列のみです。

一方、JSONでは文字列の他に数値、配列、真偽値など複数種類のデータを扱うことができます。

XMLで数字のデータを含めた場合には、受け取り側で文字列としての数字を数値型に変換して利用する手間がかかってしまいます。JSONでは数字は数値型データとして送られるため受け取り側でもそのまま利用できるというメリットがあります。

データのサイズ

XMLでは、ファイル内のほぼ全てのデータに対して開始タグ、終了タグが付けられる必要があるため、全体のデータサイズが大きくなります。

JSONでは、データを括弧で囲むことによって構造を表すため、XMLに比べて比較的データサイズが小さくなります。

人間の可読性

XMLでは、テキストなどの各データを任意の名前をつけたタグで囲む構造になっているため、人間が直接そのデータを読む場合にもタグを見ればそのデータが何を表しているか直感的にわかるので、比較読みやすい形となっています。

JSONデータは、各データを括弧で囲んで構造化しているため、人間が直接データを読んで特定のデータを探すには少し難解になっています。

JSONの扱えるデータ型

ここでは実際にJSONで扱える6つのデータについて書いていきます。ここで紹介するデータ型以外にも日時データやURLなど様々な種類のデータを扱うことができます。

文字列

データの基本、文字列はもちろん扱うことができます。JSONでデータを扱う場合には二重引用符(“”)で囲むことによって文字列であることを示します。中の値が数字であった場合にも二重引用符で囲われている場合には文字列として扱います。

{
"1番目のデータ" : "あかさたな",
"2番目のデータ" : "123"
}

数値

JSONで数値を扱う場合には、何も囲わない値となります。数値として、負の値を含む整数や浮動小数点を含む小数を扱うこともできます。

{
"1番目のデータ" : 123,
"2番目のデータ" : -456,
"3番目のデータ" : 0.1
}

配列

配列を扱う場合には、[]の括弧を使用します。配列とは、値を持った値の集合であり、0個以上の値を格納することができます。また、配列から値を取得する際には1番最初の値を0番目と数えます。

また、配列を扱う場合には0個以上の値を格納することができるため、値が1つも入っていない空の配列をデータとして渡すこともできます。

{
"1番目の値" : [],
"2番目の値" : ["0番目","1番目","2番目"],
"3番目の値" : [0,1,2,"3番目の値"]
}

真偽値

JSONデータでは、値に真偽値を格納することもできます。真偽値はブーリアンとも呼ばれ、trueかfalseで表現します。true/falseをJSONで記述する際には全て小文字で書く必要があります。

{
  "真の値" : true,
  "偽の値" : false
}

オブジェクト

オブジェクトは、まさにJSONといった形のデータ形式で{名前:値}の形式で表記される集合体で、この名前と値の組み合わせを「メンバ」と呼びます。JSONでオブジェクトを扱う際のメンバの名前は常に文字列で、値には文字列や数値などJSONで対応可能なデータ型は全て格納できます。

{
  "学校名":"○✖️小学校",
  "クラス":"1年1組",
  "クラス内人数":2,
  "生徒一覧":[
    {
      "生徒名":"石川",
      "性別":"男"
    },
    {
      "生徒名":"佐々木",
      "性別":"男"
    }
  ]
}

null

JSONでは値にnullを格納することも可能です。nullとはプログラム言語において、「何もない」ことを表すために使用される値です。JSONでnullを使用する際には、小文字で表記する必要があります。

{
"1番目のデータ" : null
}

最後に

ここまで書いてきた通り、JSONはデータサイズが比較的小さくなり、多くの種類のデータ型に対応しているため、複数のプログラム間でデータ扱う場合には非常に優秀なデータ形式であると言えます。

プログラムで使用する際にはJSON、人が目を通す場合にはXMLファイルを利用するなど、臨機応変にデータの種類を使い分けることが重要だと感じます。