保護中: マスタリングTCP/IP: 3.6
番外編: RFC8259前半
https://www.rfc-editor.org/rfc/rfc8259.txt
1. Introduction
- JavaScript Object Notation(JSON)
- 4つのプリミティブ型(string, number, boolean, null)
- 2つの構造型(object, array)
- object: キーはstring, バリューは6種のどれでも
 
1.1 Conventions Used In This Document
- 略
1.2 Specifications of JSON
- 他の文書、特にECMA-404との関係
- 歴史的経緯っぽい
1.3 Introduction to This Revision
- JSONの定義はもうあるけどちょっと問題あったから直す
2. JSON Grammer
- 
JSONはtokenの連続である 
- 
tokenは以下のものからなる - 6つの構造文字
- string
- number
- 3つのリテラル
 
- 
6つの構造文字 [] arrayの開始と終了 {} objectの開始と終了 : name-separator , value-separator
- 
構造文字の前後にはwhitespaceがあってもよい - whitespeceはスペース、タブ、改行、キャリッジ・リターン(?)
 
3. Values
- JSON valueはobject, array, number, string,  falsenulltrueのどれか
- リテラルは小文字
4. Objects
- 0個以上のname-valueペア(=メンバー)を {}で囲んだもの
- nameはstringでその後に :を置く
- valueの後に ,を置く
- nameはオブジェクト内でユニークであるべき(SHOULD)
- でないとそのまま認識されたり最後のペアだけが認識されたりエラー吐いたりする
 
- メンバーの順序が保持される保証はない
5. Arrays
- 0個以上のvalueを ,で区切り[]で囲んだもの
- 型が違ってもいい