最近更新: 2006-08-21

JSON 速寫

JSON 是一種輕量級且可讀性高的資料轉換中介格式。已成為 IETF RFC4627 規範內容。

多年前 (其實也才6,7年前),當 XML 出世時,適逢分散式架構崛起之時,人們無不歡欣鼓舞。因為透過 XML 在網路間交換資料,真的很方便。只是 XML 有時候用起來有點小題大作的感覺。有時為了傳送很少的資料,卻要用上十幾倍於實際交換資料的記憶體空間,都浪費在 XML 的標籤上了。舉例來說,要傳送一個含有2個數值的陣列,其值各為 0 和 1。用 XML 來傳送的話,寫成 <array><item index='0'>0</item><item index='1'>1</item></array>。我不過要傳送 0,1 兩個數值,竟然要傳送 63 個 bytes ,其中只有 2 個 bytes 是實際要交換的資料。沒搞錯吧?嘿,老兄,有沒有更懶一點的方法。有的,就是 JSON 。

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.
Introducing JSON

JSON 不是很難懂的東西,只要會用 JavaScript ,就懂 JSON 了。JSON 根本就是 JavaScript 的變數定義語法。例如下例的 JavaScript 程式碼,定義了一個字串 myString 、一個陣列變數 myArray 、一個個體變數 myObject

var myString = "hello";
var myArray = [0,1,2,3,4,5,6,7,8,9,10];
var myObject = {"name": "john", "title":"nothing"};

只要把前面的變數宣告語法拿掉,只留下等號右邊的內容,就是一個 JSON 的資料內容了。回到一開始用 XML 傳送兩個數值的例子,用 JSON 來表達,只要寫成 [0,1] 就可以了。這可真省不少事。

而要如何在程式中取用 JSON 呢?一樣是非常的簡單。如下例:

var JSONmyArray = '[0,1]'; 
// put an array by JSON format.

var myArray = eval('(' + JSONmyArray + ')');

window.alert('Value of myArray[0] is ' + myArray[0]);

簡單到幾乎感覺不到它的存在。最後一個例子是常見的 JSON 應用,如果你無法看出這個 JSON 包含哪些內容,那麼表示你對 JavaScript 還不夠熟悉,請回頭複習 JavaScript

[
{
  "id": "PC1549xxxx",
  "timestamp": "2006-08-21 20:10:32",
  "items": [
    {
      "id": "47231322",
      "price": "100",
      "qty": "2"
    },
    {
      "id": "23131470",
      "price": "50",
      "qty": "1"
    }
  ]
},
{
  "id": "PC1815xxxx",
  "timestamp": "2006-08-20 12:32:02",
  "items": [
    {
      "id": "47214589",
      "price": "99",
      "qty": "3"
    },
    {
      "id": "33135870",
      "price": "15",
      "qty": "3"
    }
  ]
}
]
相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2045155.html