JSON

JSONとは

  • JSON(ジェイソン) は、「JavaScript Object Notation」の略
  • テキストフォーマットの一種であり、シンプルで軽量
  • JSON は、null、真偽値、数値、文字列、配列、オブジェクト(連想配列)のデータを、文字列で表現できる
  • 配列とオブジェクト(連想配列)は、ネスト(入れ子)構造で表現する事ができる

仕様

  • フォーマットはリテラル表記を使用する
  • ただし、オブジェクトのキーの部分は、文字列の表現と同じ(クォーテーション表記を省略することはできない)
  • 文字列はダブルクォーテーションで囲む必要がある(シングルクォーテーションは不可)
  • 値の文字列はダブルクオーテーションで囲む必要がある
  • nullを表現できる

ブラウザが JSON パース機能をサポートしているか調べる

  • ブラウザが、JSON パース機能をサポートしているか調べるには、window.JSON が真であるか比較する

リテラルの復習

配列リテラル

var ary = [true , false , 0 , 1 , 2 , 0.345 , "あ" , "い"];

オブジェクトリテラル

var obj = {
	a : true,
	b : false,
	c : 0,
	d : 1,
	e : 2,
	f : 0.345,
	g : "あ",
	h : "い"
};

サンプル

配列リテラル

一次元配列

[ true , false , 0 , 1 , 2 , 0.345 , "あ" , "い" ]

多次元配列

[
	[
		["A","B","C"],
		["D","E","F"],
		["G","H","I"]
	],[
		["J","K","L","M"],
		["N","O","P","Q","R"]
	],[
		[
			["S","T","U"],
			["V","W"]
		],[
			["X"],
			["Y"],
			["Z"]
		]
	]
]

オブジェクトリテラル

オブジェクト

{ "a":true , "b":false , "c":0 , "d":1 , "e":2 , "f":0.345 , "g":"あ" , "h":"い" }

配列とオブジェクトのネスト構造

{
	"aaa":{
		"count":123,
		"name":"テスト1",
		"result":false
	},
	"bbb":{
		"count":456,
		"name":"テスト2",
		"result":true
	},
	"ccc":{
		"count":789,
		"name":"テスト3",
		"param":{
			"ary":["a","b","c"],
			"name":"テスト4"
		},
		"result":true
	}
}

エスケープ文字

表記Unicode説明
\bU+0008バックスペース
\fU+000Cフォームフィード
\nU+000Aラインフィード(改行コード)
\rU+000Dキャリッジ・リターン(改行コード)
\tU+0009タブ
\"U+0022ダブルクォーテーション
\/U+002Fスラッシュ
\\U+005Cバックスラッシュ(円記号)

入力サンプル

"\tあいうえお\n\tかきくけこ"

Unicodeスカラ値

「\uFFFF」と記述すると、Unicode 1文字分を表現できる。なお、「FFFF」の部分には、ユニコードを 16 進数で表記する

サロゲートペアとなるコードは、2つに分けて表記し、例えば、U+10FFFF 文字は、\uD83F\uDFFF と表記する。

入力サンプル

"\u3042 \u3044 \u3046 \u3048 \u304a"

参考