15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JSONは義務教育

Posted at
1 / 15

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/

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?