開発初心者の開発日記~25日目~

備考

7/22の分です。

7/23は体調を崩し、7/24,25はやる気が消えていました。

具体的な予定を自分の中で立てたので、今日(7/26)から再び意欲的に取り組んでいきたいと思います。

内容

  • Webを支える技術でのインプット
    • 35分程度
    • 231ページから240ページ
    • 一部は飛ばした

Webを支える技術のメモ

第14章:JSON

  • 下記の内容の一部をこちらで公開しました。

14.1 JSONとは?

  • JSONJavaScript Object Notationの略
  • 特徴:JavaScriptの記法で簡潔に記述することができる
  • 利点1:WebサービスではブラウザでJavaScriptを実行できるので相性が良い
  • 利点2:データ表現の冗長性が低い

14.2 メディアタイプ

  • 「application/json
  • 使用上、UTF-8UTF-16UTF-32のいずれかでエンコードすることになっている
  • 特別な理由がなければUTF-8を使うのが無難なので、Content-TypeヘッダはContent-Type: application/json; charset=utf-8とする

14.3 拡張子

  • 「.json」を用いる

14.4 データ型

  • 組み込みで用意されているデータ型
    • オブジェクト
    • 配列
    • 文字列
    • 数値
    • 真偽値
    • null
  • オブジェクト
    • 名前と値の集合のこと
    • 名前と値の組のことを「メンバ」と呼ぶ
    • メンバの名前は必ず文字列
    • メンバの値はなんでもOK
    • オブジェクトは{}で囲まれ、名前と値の組は:で区切る
    • 例:
  • 配列
    • 0個以上の値を保持できる
    • 配列は[]で囲む
    • 文字列の配列:["foo", "bar", "baz"]
    • オブジェクトの配列:[{"foo": "bar"},{"hoge": "fuga"}]
    • 配列の配列:[[10, 10], [20, 20]]
    • 空配列:[]
    • 複数種のデータ型を含む配列:[{"foo": "bar"}, "baz", 100, true, null]
  • 文字列
    • ""で囲む
    • 単純な文字列:"あいう"
    • コントロール文字を含む文字列:"foo\\bar\n"
  • 数値
    • 整数:10
    • 負の整数:-100
    • 小数:30.1
    • 指数:1.0e-10
  • 真偽値
    • truefalse
  • null
    • 値がないことを示す
    • null
  • 日時
    • 日時を組み込み型に持たない
    • 開発者側での規定が必要
    • (1)UNIX時間を利用する場合
      • UNIX時間(1970年1月1日0時0分0秒からの経過秒数)を数値として表す
      • 例:123456789
      • 問題:タイムゾーンが扱えない
    • (2)JavaScriptのDateクラスのtoString関数を利用する場合
      • 問題:処理系によって出力が異なる
    • (3)標準的なフォーマットを利用する場合
      • 例:ISO8601フォーマットにより、"2021-07-02T05:43:35+09:00"と表す
      • 一番良い方法
  • リンク
    • ハイパーメディアフォーマットで必須の存在
    • 単純にURIを文字列として持つのが簡単
    • また、相対URIではなく絶対URIにしておくべき

14.5 JSONPによるクロスドメイン通信

(今回は飛ばす)

14.6 ハイパーメディアフォーマットとしてのJSON

  • JavaScriptをベースにしたシンプルなデータフォーマット
  • 各種プログラミング言語がライブラリを用意している
  • XMLと比べて冗長性が低いので、データ表現のフォーマットとして利用される
  • リソースを表現するフォーマットとしてはハイパーメディアの側面を持つことも重要