JSONのまとめ(メモ用)


自分のメモ用に、学んだことを書きます。
業務でAPIを触る機会があり、「JSONは知っているか?なにかと使うだろうから覚えておくといい」という話をされたので、復習も兼ねてJSONについてまとめていきます。
※まだメモ用程度なので、今後も追記していく予定です。

JSONとは

JSONとは「JavaScript Object Notation」の略で、データをやりとりする形式の一種。
もともとはJavaScriptと他の言語をやりとりをするために考えられた、オブジェクトを表記するための書き方の決まりごとである。
ファイルの中身はただのテキストデータなので人間が見ても内容を理解することができる。ファイルの拡張子は."json"。
下記は東京タワーの住所を表しているJSONファイルである。

zipcode.json
        {
            "address1": "東京都",
            "address2": "港区",
            "address3": "芝公園",
            "kana1": "トウキョウト",
            "kana2": "ミナトク",
            "kana3": "シバコウエン",
            "prefcode": "13",
            "zipcode": "1050011"
        }

JSONの構造をみていく

JSONは右と左に文字があり、真ん中が:(コロン)で区切られている。
左辺は「メンバー」と呼ばれ、文字列の値で書かれている。
右辺は「値」と呼ばれ、全部で6種類存在する。

まずは右辺の説明から。

文字列値(string):"abc"や"def"等、任意の情報をダブルクオートで囲んだ記述。
数値(number):1や23.45等、数値をそのまま書いた記述。
真偽値(boolean):true及びfalseという「yes/no的な意味合い」を表現する特別な記述。
ヌル値(null):nullという「値がカラッポであること」を表現する特別な記述。
配列値(array):[]や[1]や[1,true]等、0〜複数個の値の並びを表現する記述。
オブジェクト値(object):{}や{"foo":"bar"}や{"foo":"bar", "baz":null}。
※一方、下記は「値」ではありません。
abcやd"ef"や"ab(全体がクオートされていなかったり閉じていない。)
TRUEやNULL(大文字と小文字は区別する。)
[1][2,3]や[1],[2,3]や{}{}(複数の値がつながったものは値ではない。)

次に左辺について。

"foo": "hoge"
"bar":"fuga"
"baz":1
"qux":[]
※一方、下記は「メンバー」ではありません。
1:2(左辺が文字列値じゃない。)
"foo";"bar"や"foo"や1(コロンがない。)
"foo":"bar":"baz"(コロンが2つ以上ある。)
"foo":hoge(右辺が値じゃない。)
【非エンジニアに贈る「具体例でさらっと学ぶJSON」】より抜粋

なぜJSONが通信用のデータ交換として利用されているのか

テキストデータであるJSONは軽量かつオブジェクト構造になっている。
このことから、これまで使われていた冗長なXMLデータに比べて通信時のデータ量を削減することができる。
また、構造をみてわかるとおり、JSONは配列値からオブジェクトまで幅広く取り扱うことができる。このことから、複雑なデータもJSONでは取り扱うことができるとわかる。

引用元