天天看點

JSON不等于JavaScript對象

很多人将JSON看成是JavaScript對象。其實JSON是一種字元串的表示方法,這種表示受到了JavaScript對象結構的啟發而已。設計JSON的用意是友善伺服器和浏覽器交換資料。由于JSON的簡單性,在浏覽器、伺服器之外的領域也有廣泛的應用。

JSON不等于JavaScript對象

我嘗試複制一些JavaScript對象,然後将它們發送到一個基于JSON的書簽站點。但是它不能工作,為什麼?讓我們檢查一下我嘗試發送的JavaScript對象:

{

    name : "why this kolaveri di",

    url  : "http://www.youtube.com/watch?v=YR12Z8f1Dh8",

    singer: "Dhanush",

    movie: "3",

    music : "Anirudh Ravichandran",

    views : 10000000,

    // Adding this for testing purpose

    play : function() { },

}

伺服器傳回的錯誤資訊是

Unexpected token n

(伺服器使用NodeJS和Express架構搭建),這意味着上面的JavaScript對象不是合法的JSON。我閱讀了Douglas Crockford的 JSON說明 ,然後注意到了這些規定:

  1. 所有的鍵必須用雙引号包裹
  2. JSON不支援注釋
  3. JSON的值不得為函數,不得未定義。值可以是用雙引号包裹的字元串,或是數字,或true、false,或null,或一個對象、數組。允許嵌套結構。
  4. JSON的最後一個值不使用

    ,

    分隔符。

是以我上面的代碼需要修改成

    "name" : "why this kolaveri di",

    "url"  : "http://www.youtube.com/watch?v=YR12Z8f1Dh8",

    "singer": "Dhanush",

    "movie": "3",

    "views" : 10000000,

    "music" : "Anirudh Ravichandran"

我覺得,學習JSON标記是很重要的,因為web開發中的大量配置檔案(package.json、bower.json)是JSON格式。每個web開發者都應該了解JSON。

繼續閱讀