JSON不等于JavaScript对象

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

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

image.png


我尝试复制一些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。

相关文章
|
7天前
|
JavaScript
JS 获取对象数据类型的键值对的键与值
JS 获取对象数据类型的键值对的键与值
|
10天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
17天前
|
JavaScript 前端开发
Math对象:JavaScript中的数学工具
Math对象:JavaScript中的数学工具
26 1
N..
|
24天前
|
存储 JavaScript 前端开发
JavaScript中的对象
JavaScript中的对象
N..
10 0
|
10天前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
24天前
|
存储 JSON 安全
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
60 0
|
2天前
|
JavaScript
【Js】检查Date对象是否为Invalid Date
【Js】检查Date对象是否为Invalid Date
5 0
|
2天前
|
存储 JavaScript 前端开发
JavaScript的引用数据类型主要包括对象
【4月更文挑战第16天】JavaScript的引用数据类型主要包括对象
9 4
|
7天前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`'1.2,2,3,4,5'`)转换为对象数组。通过使用`split(',')`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
15天前
|
存储 JavaScript 前端开发
在浏览器中存储数组和对象(js的问题)
在浏览器中存储数组和对象(js的问题)