CodeLog

JSONの形式(フォーマット)について分かりやすく解説する

2019-12-19 Json

JSONについてある程度知識が貯まってきたので、備忘録としてまとめていく。

JSONとは何か?

JSONとは、「JavaScript Object Notaion」の略で、データを簡単に扱いやすくできるように設計されているもの。

正式名称にJavaScriptと書かれているが、RubyやPHPなど多くの言語で使われている。

JSONには色々な仕組みや仕様があるけど、JSONを扱う上で特に以下の3つを知っておくと便利。

  • MIMEタイプは application/json。拡張子は .json
  • 文字コードは UTF-8 固定
  • バイトオーダーマーク (BOM)はない

参考:JSON入門

JSONの文法について

JSONでは以下のように、多言語で言う連想配列のような書き方をする。

{"name":"tarou"}

ポイントとなるのは、多言語の連想配列のkeyに当たる役割をしている"name"の部分。この"name"必ずダブルクォーテーションを使う必要がある。(シングルクォーテーションだとダメ)

また、JSONではvalueには"tarou"のような文字列の他に以下のデータ型が使える。

  • 数値 12 44.5
  • null
  • true false
  • 配列 [ ]
  • オブジェクト { }

例えば、以下のような感じ。

{
  "name": null
}

{
  "flag": true,
  "not_flag": false
}

{
"color_list": [ "red", "green", "blue" ]
}

{
  "user": {
    "id": "12",
    "name": "tarou"
  }
}

また、JavaScriptやPHPなどの言語であれば、連想配列を以下のように、要素の最後に,を置くことができるが、JSONではできない。

  "user": {
    "id": "12",
    "name": "tarou",  // この書き方はJSONではダメ
  }

JSONにはコメントをつけることができない。その代わり"_comment"のような要素を書いてコメントとして使っている。

参考:Can comments be used in JSON? - Stack Overflow

実際にJSONはどのように使えば良い?

まともな言語であれば、必ずJSONを簡単に扱うための関数やクラスを用意しているので、それらを使うのが良い。

例えば、PHPであればjson_encodejson_decodeと言う関数が用意されており、簡単にPHPの変数をJSONに変換したり、逆にJSONをPHPの変数に直したりできる。

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json)); 

参考:PHP: json_decode - Manual

参考:PHP: json_encode - Manual