JavaScript中的对象与JSON
简介
json即javascript object natation,它是一种轻量级的数据交换格式,非常适合于服务器与 javascript 的交互。
json是一种数据交换格式,像xml和yaml一样是一种在各种不同语言间传递结构化信息的方式。从另一方面来说,javascript对象是javascript语言中的一种数据类型,就像php中的数组、c++中类和结构体。
定义json与javascript对象
在javascript程序中定义对象的时候,对象的属性名可以加双引号也可以不加双引号。如果属性名包含特殊字符(如!、if等)的时候,就必须加双引号。
在定义json的时候,属性名必须加双引号。
代码示例:
1.定义javascript对象
var obj={name:"tudouya","sex":"man"}; #两个属性可以加双引号也可以不加
var obj={"!":"hello world"}; #属性名包含特殊字符时必须加双引号
2.定义json字符串
var jsonstring={"name":"tudouya"}; #定义json时必须加双引号
javascript对象转换为json
1.javascript对象转换为json
我们可以使用javascript的内置函数将javascript对象转换为json,这个函数就是json.stringify().
代码示例:
var obj={name:"tudouya",sex:"man"};
var jsonobj=json.stringify(obj);
console.log(jsonobj);
##输出结果为:{"name":"tudouya","sex":"man"}
在将javascript对象转换为json的时候,有一点是需要我们注意的:
如果对象中包含有值为函数和日期的属性,json会忽略值为函数的属性,并将值为日期的属性转换为字符串。
代码示例:
var obj={
name:"tudouya",
birthday:new date(),
action:function (){
document.write("walk");
}
};
var jsonobj=json.stringify(obj);
console.log(jsonobj);
##输出结果为:{"name":"tudouya","birthday":"2014-08-12t10:05:00.497z"}
javascript中解析json
在老版本的js中,大家通常都使用eval()函数来解析json,但是ecmascript5给我们提供了一个解析json的新函数json.parse()。
这个函数的使用方法比较简单,大家可以自行尝试。当对某个json字符串应用该函数以后,该json就被转换为javascript的对象,也就是说当用typeof运算符查看该函数的类型时,返回的值是object。
同样有一点需要注意的是,该函数是ecmascript5以后才支持的,如果是旧版本的浏览器那么可能不支持该函数。解决的方法是加载一个实现该函数的js文件,即json2.js。如果使用的是jquery框架,jquery.parsejson(),该函数调用了json.parse()方法。
关于使用eval()方法解析json,这个等深入学习后会记录下来。
一个很重要的概念
作为一个前端菜鸟,经常听到别人说“json对象”,但是其实并没有“json对象”这个概念,json真正的表现形式是字符串。