JSONとは何か?JavaScriptで使えるデータの記述方法

2021年7月1日

JSONの概要

JSONとは“JavaScript Object Notation"の略で、直訳すれば「JavaScriptにおけるオブジェクトの表記法」という意味になります。
JSONはCSVやXMLと同じくデータを記述する方法の一つで、拡張子は「.json」となります。
その名前が示すとおり、JavaScriptの構文で表記されますが、JavaScript以外の言語にも広く使われています。
今回はノンプログラマーの方やプログラミング初心者の方に向けて、このJSONについて解説していきます。

JSONの記法

JSONは{}の中にキーとなる文字列とをコロンで区切って記述します。
値には基本データ型である文字列、数値、真偽値(true、false)のほかオブジェクト、配列、nullも使用することができます。
シングルクォーテーションは使えず、ダブルクォーテーションのみが使えます。

{ "item": "りんご" }
{ "price": 100 }
{ "discount": true }
{ "brand", null }

オブジェクトはキーと値のペアをカンマで区切り、全体を{}でくくることで表現します。

{
"item":"りんご",
"price":100,
"discount":true,
"brand":"サンふじ"
}

配列は値をカンマで区切って[ ]で全体をくくることで表現します。

{
"id":"001",
"attribute":{
 "item":"りんご",
 "price":100,
 "discount":true,
 "brand":"サンふじ"
},
"dealer":[
 "A商店",
 "Bストア",
 "Cマート"
]
}

オブジェクトの中にオブジェクトや配列を入れるときはインデント(字下げ)することで可読性が向上します。

なぜJSONが必要なのか

Webアプリケーションなどでデータを扱う形式には、JSON以外にもCSVXMLがあります。
ここでは表1のようなデータがあった場合、CSVとXMLでデータの表現方法にどのような違いが出るのかを見ていきましょう。

iditempricediscountbranddealer1dealer2dealer3
001りんご100TRUEサンふじA商店BストアCマート
表1

CSV

CSVはデータをカンマで区切ったデータ形式です。例えば、以下のように表現します。

id,item,price,discount,brand,dealer1,dealer2,dealer3
001,りんご,100,true,サンふじ,A商店,Bストア,Cマート

このように、CSVはカンマで区切っているだけなので、シンプルで分かりやすい反面、複雑なデータ形式を表現することには向いていません。

XML

XMLはCSVよりも複雑なデータを扱うことができますが、値として扱えるデータ型は文字列のみです。また、人間が見て直感的に分かりづらいという難点があります。
先ほど示したJSONの例をXMLで記述すると下記のようになります。

<?xml version=“1.0” encoding=“utf-8”?>
<data>
    <goods>
    <id>001</id>
    <attribute>
        <item>りんご</item>
        <price>100</price>
        <discount>true</discount>
        <brand>サンふじ</brand>
    </attribute>
    <dealer>
        <dealer1>A商店</dealer1>
        <dealer2>Bストア</dealer2>
        <dealer3>Cマート</dealer3>
    </dealer>
    </goods>
</data>

JSONの方がXMLに比べて可読性が高く、記述量が少なくて済むことが分かります。
以上の理由から、昨今ではJSONがデータ交換フォーマットの主流になりつつあります。

JSONはどういうときに使われるのか

JSONはJavaScriptとの親和性が高いことから、Ajaxの分野で広く利用されるようになっています。AjaxはAsynchronous JavaScript + XMLの略で、本来XMLの使用を前提としていましたが、その簡易性からXMLに代わりJSONが用いられるようになってきました。
Ajax以外にも、Webアプリケーションのフロントエンド/バックエンド間のインターフェースなど、異なる言語間のデータ交換フォーマットに使用されることも多いです。

参考