プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

JSON

JSONはシステム間のデータの交換によく使われるデータフォーマットだ。

YAMLとの違いを理解して状況に応じて適切な選択、データ構造設計、データ処理ができるようになろう。

YAMLについてはこちらで触れているので参考にしてほしい。

architecting.hateblo.jp


基本情報


特徴

  • 当初はAjaxの開発者達から注目された
  • 単純なので実装した言語が多く、異なる言語間でのデータ受渡しに適している
  • 同じ理由でXMLプロセッサのように攻撃の対象になる可能性が低い
  • これらの理由でWeb APIプログラミングでよく使われている
  • データ構造をオブジェクトと配列で表現する
  • トークンとトークンの間のどこにでも空白を挿入できる
  • コメント機能はない

YAMLとの比較

  • 仕様上はYAML1.2の「フロースタイル」のサブセット
  • インデントや空白は意味を持たない
  • 8進数、16進数、日付やタイムスタンプは対応していない
  • 一重引用符は使えない
  • コメントがなく、括弧が必要なためYAMLと比較すると人間が読み書きするのに適さない

オブジェクト

  • 順序付けされない名前/値のペアのセット
  • 複数のキー/値のペアを{}で囲む
  • キーの後ろにはコロン
  • キー/値のペアはコンマで区切られる
  • キーとして使うデータ型は文字列に限る
    • キーは文字列なので2重引用符で囲む必要がある
{ "name": "Taro", "age": 30 }

配列

  • 順序付けされた値の集まり
  • 複数の値を []で囲む
  • 値はコンマで区切られる
  • 全ての型のデータを値として入れることができる
"colors": [ "blue", "yellow, "red" ], 

  • 以下のデータ型に対応

    • 数値(整数、浮動小数点数
    • 文字列
    • 真偽値(true と false)
    • null
    • 配列
    • オブジェクト
  • 文字列

    • 2重引用符で囲う
    • 1置重引用符はだめ
  • 数値

    • 8進数および16進数の形式が使えない