JSON不等于JavaScript对象

很多人将JSON看成是JavaScript对象。其实JSON是一种字符串的表示方法,这种表示受到了JavaScript对象结构的启发而已。设计JSON的用意是方便服务器和浏览器交换数据。由于JSON的简单性,在浏览器、服务器之外的领域也有广泛的应用。

a1

 

我尝试复制一些JavaScript对象,然后将它们发送到一个基于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。

原文 JSON is not Javascript Object
翻译 SegmentFault

Comment are closed.