JSONとはデータ記述言語(文字列)である
JavaScript Object Notation(JSON、ジェイソン)は軽量なデータ記述言語の1つである。構文はJavaScriptにおけるオブジェクトの表記法をベースとしているが、JSONはJavaScript専用のデータ形式では決してなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しに使えるよう設計されている。
JSONはJavaScriptにおけるオブジェクト表記法のサブセットであるが、JavaScriptでの利用に限られたものではない。
(Wikipediaより)
Javascriptの書き方だけど、これ標準化しようぜ
JSON基礎
- 名前/値のペアの集まり
- 順序付きリスト(配列)
記載例
{
"user" : {
"name": "Nishida",
"age": 17,
"languages": ["Japanese", "English", "Spanish"],
"active": true
}
}
名前/値のペア
- 名前は必ず
"
で括る - 名前と値の間は
:
で区切る - 名前と値のペアのことを メンバー と呼ぶ
JSONトークン
構造 {
}
[
]
:
,
定数 null
true
false
"文字列"
数値
※ トークン間に空白文字を入れてもよい
値のデータ型
- number 10進法の数値(負数、浮動小数点、指数表記可)
-
string
"
で括った文字列。特殊文字は必ずエスケープする。 -
array
[]
内に値を,
区切りで記載 順序は保持される -
object
{}
オブジェクト(連想配列)順序は保証されない -
true
true
小文字で表記 -
false
false
小文字で表記 - null 小文字で表記
※日時はありません
JSONの利点
プレーンテキストである
- ログとして残しやすい
- 人間への可読性を残している
- 再利用しやすい
JSONの利点
対応するプログラミング言語の多さ
JSONは多くのプログラミング言語で利用可能である。例えば、ActionScript, C, C++, C#, ColdFusion, Common Lisp, Curl, D言語, Delphi, E, Erlang, Groovy, Haskell, Java, JavaScript (ECMAScript), Lisp, Lua, ML, Objective-C, Objective CAML, Perl, PHP, Python, R, Rebol, Ruby, Scala, Squeakなど。
RESTful APIによるAjax通信に広く利用されている
すべてのデータフォーマットを過去にする
過去にされた方々
固定長バイト氏
「昔はがんばっていたんですが、UTF-8さんとどうしても折り合いがつかなくてね。古い顧客だけとやっていくことにしたよ。」
CSV氏
「私って仕様がまちまちなところがあって、いろんな人を困らせていたと思います。最近Excelさんと不仲になってきたこともあるし、あとはJSONさんに任せて引退しようと考えています」
過去にされた方々
XML氏
「自由度の高さと属性を売りにがんばってきましたが、さすがに若者はついてこれなくなりましたね。今後は活動を縮小していこうと思います」
PDF👦🏾「Adobe先生の都合でだいぶ乖離しちまったけど、これからもよろしくな。」
HTML👧🏻「ウチで飼ってるCSS🐁とJavascript🦌が迷惑をかけるかもしれませんが、よろしくおねがいします。」
XML(はやくこいつらと縁を切りたい…)
すべてのシリアライズを過去にする
Comming Soon!
JSONの仕様
以下が定義されている
RFC 4627 (2006)
RFC 7159 (2014)
RFC 8259 と ECMA-404 (2017 ★最終)
ECMA-404は(正味)5ページのみ!
参考にしました
json.org (公式サイト)
https://www.json.org/json-ja.html
Wikipedia JavaScript Object Notation
https://ja.wikipedia.org/wiki/JavaScript_Object_Notation
Gixo blog データフォーマットの変遷について考える
https://www.gixo.jp/blog/3965/
マネーフォワード エンジニアブログ JSON仕様(ECMA-404) を眺めてみる
https://moneyforward.com/engineers_blog/2016/03/29/json-ecma-404/