之前有聽過JSON的名詞,
當時的瞭解為跟XML一樣的資料儲存的格式,
主要特性: lightweight text-data interchange format, language independent, "self-describing"
其中language independent與self-describing是跟XML一樣的,
主要是因為用JavaScript的語法來描述文字資料,
所以才會稱之為"JavaScript Object Notation",
但事實上還是language independent.
既然是序列化(serialization)的一個格式,
總是有parser與encoder之類的東西,
很多語言都有實作JSON.parse與JSON.encode這樣的函式,
實際一個JSON會長這樣:
var txt = '{ "employees" : [' + '{ "firstName":"John" , "lastName":"Doe" },' + '{ "firstName":"Anna" , "lastName":"Smith" },' + '{ "firstName":"Peter" , "lastName":"Jones" } ]}';
假如在JavaScript中要讀入的話, 可以用eval搭配括號()
var obj = eval ("(" + txt + ")");
在php的話可以用類似底下的語法來轉回php物件:
$obj = $json_decode($txt); print $obj->employees[0]->firstName;
JSON也可用在傳輸Ajax的資料,
假如要拿來跟XML比較的話:
類似XML的地方:
- 純文字 (JSON is plain text) (其實XML有可以定義binary)
- 自我表述 (JSON is "self-describing") (human readable, 蠻牽強, 應是指對應程式資料)
- 有階層性 (JSON is hierarchical) (values within values)
- 可透過JavaScript處理 (JSON can be parsed by JavaScript)
- 可使用Ajax傳輸 (JSON data can be transported using AJAX)
- 沒有結尾tag (No end tag)
- 較短 (Shorter)
- 讀寫快速 (Quicker to read and write)
- 可直接用JavaScript內建的eval解析 (Can be parsed using built-in JavaScript eval())
- 使用array (Uses arrays)
- 沒有保留字 (No reserved words)
JSON會比XML便利很多,
因為JSON可以在JavaScript中用eval直接轉成JavaScript的array,
而XML還需要透過DOM parser來處理.
沒有留言:
張貼留言