欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript中的对象与JSON

程序员文章站 2023-08-21 20:54:08
简介 json即javascript object natation,它是一种轻量级的数据交换格式,非常适合于服务器与 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真正的表现形式是字符串。