JSON とは何か
あなたのアプリが に質問を投げると、その答えは という形式のテキストで返ってくる。これがデフォルトになったのは、人間にとって読みやすく、かつプログラムにとって扱いやすいからだ。あなたはこれを絶え間なく目にすることになるので、読めるようになっておく価値がある。
JSON はキーと値から作られている。キーは引用符に囲まれたラベルで、値はそれに紐づくデータだ。次は、ひとりのユーザーを表す実際の例である。
{
"id": 42,
"name": "Ada Lovelace",
"email": "[email protected]",
"isAdmin": false,
"loginCount": 137,
"tags": ["beta", "early-access"],
"profile": {
"city": "London",
"avatarUrl": null
}
}
誰かが記入したフォームのように読めばいい。"name" は項目で、"Ada Lovelace" はそこに書き込まれた内容だ。2つの構造がすべての仕事をこなす。
- object は波括弧
{ }で囲まれる。キーと値のペアの束で——ひとつのレコードのようなものだ。上の例全体がひとつの object である。 - array は角括弧
[ ]で囲まれる。順序のついた値のリストだ。上では"tags"が2つの string からなる array を保持している。
"profile" が object の中の object になっていることに注目してほしい。JSON は入れ子になる——値そのものが object や array になり得て、必要なだけ深くできる。だからこそ、ひとつのレスポンスでユーザーと、その住所と、直近10件の注文をまとめて表現できるのだ。
同じユーザー object をツリーとして描くと、その形がひと目でわかる——上には平らな項目が並び、そこからリストひとつと入れ子の object が枝分かれしている。
{ } user (オブジェクト)
├── id ............ 42 (数値)
├── name .......... "Ada Lovelace" (文字列)
├── isAdmin ....... false (真偽値)
├── tags .......... [ ] (配列)
│ ├── "beta"
│ └── "early-access"
└── profile ....... { } (オブジェクト)
├── city .......... "London" (文字列)
└── avatarUrl ..... null (null = 値なし)