javascriptをある程度学び、Ajaxなどの非同期通信を学ぶようになってくると、必ずと言って良いほどお世話になるのが、JSONという概念です。
JSONとは
JavaScript Object Notationの略で、直訳すると、「javascriptオブジェクト表記法」となります。
つまりJSON、XMLなどと同様に、javascriptで使うオブジェクトを表す便利なただの文字列だったわけですね。
実際のJSON
JSONは、javascriptのオブジェクトリテラルと同じように書くことができます。次の例では、ID、名前、メールアドレス、年齢、持っている免許などのユーザー情報をJSONとして記述しています。
{
"id" : 1,
"name" : "Michael",
"mail" : "michael@example.com",
"age" : 20,
"licenses" : ["car" , "motorcycle"]
}
Key : Value を一組として、カンマ区切りでプロパティを記述していきます。Valueには、数値、文字列のほかに、配列やネストされた連想配列(オブジェクト)が格納できます。javascriptであれば、最後のカンマや型など自由自在ですが、JSON記法では明確な規約があります。混同してしまうと後々面倒なことになるので、しっかり押さえておきましょう。
JSONとjavascriptオブジェクトとの違い
JSONは、javascriptのオブジェクトリテラルに比べて、以下のような違いがあります。
- keyは文字列に限る
- 数値型は10進数に限る(16進表記などは不可)
- 文字列リテラルはダブルクォートに限る
- 最後の要素の末尾ににカンマを付けてはならない
反面、boolean型やnullなどはそのまま定義できます。bool値やnullは文字列ではありませんから、ダブルクォートを付けてはいけません。
{
"isAdmin" : true
}
まとめ
とはいえ、大抵の言語のフレームワークはJSONをパースする関数やクラスを搭載しています。javascriptでも、JSON.parse
やJSON.stringify
などの関数がありますので、生でJSONを記述する機会はそうありません。
しかし、node.jsなどのサーバーサイドjavascriptをはじめ、様々なライブラリでは、設定ファイルとしてJSONが使われていたりします。
その時、javascriptと同様に書くと思わぬところでエラーを起こしてしまいます。はまってしまいがちなので、気をつけておきましょう。