JS/JSON详解

JSON(Javascript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本根式,是理想的数据交换格式。

同时JOSN是JavaScript原生格式,这意味在JavaScript中处理JSON数据不需要任何特殊的API或者工具包。

JSON是javascript对象文字符号的一个子集,由于JSON是javascript的一个子集,它可以自如的在javascript中使用。 

 

在JSON中,有俩种结构:对象和数组。

1 一个对象以括号开始,括号结束。名称与值之间用冒号分开“:”,“名称/值” 对之间用逗号分开“,”。  

  名称用引号括起来,值如果是字符型则用引号括起来,数值型则不用。例如:

对象:var str={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

取值:var xild        = str2.xlid;
         var xldigitid = str2["xldigitid"];


对象:var myJSONObject = {

      "bindings":  [

              {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},

               {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete://.*"},

              {"ircEvent": "PRIVMSG", "method": "randomURL", "regex": "^random://.*"}

          ]

};

取值:var jsonObj = myJSONObject.bindings;

         var ircEvent = jsonObj[0].ircEvent;

在这个例子里,创建了只包含一个成员bindings的对象,而这个对象又包含了一个拥有三个对象的数组,

其中每个数组对象包含了ircEvent,method,regex三个成员。

取值var newURL = myJSONObject.bindings[0].method;

 

2 数组(array)是值得有序集合。一个数组用中括号开始,中括号结束。例如:

数组:var jsonranklist = [{"xild":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},

                             {"xild":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

 取值:var xild = jsonranklist[0]["xild"];

          var xild = jsonranklist[0].xild;

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串:

var str = '{"name":“cxh”,"sex":"man"}';

取值:var obj = eval('(' + str1 + ')');
         var name = obj.name;

JSON对象 :

var str2 = {"name":"cxh","sex":"man"};

 取值:var name= str2.name;
          var sex= str2["sex"];

一、JSON字符串转换为JSON对象的三种方法

eval()会触发javascript的编译器。因为JSON是javascript的一个真子集。编译器会正确解析字符串内容,同时生成对象结构。字符串必须用括号括起来,以免产生javascript语法歧义。

var obj = eval( '(' + str1 + ')' );

或者 var obj  = str1.parseJSON(); //修改后的版本

或者 var obj = JSON.parse(str1); //修改前的版本

然后,就可以这样读取:

alert(obj.name);

alert(obj.sex);

 

例如:

var str1 = '{ "name": "cxh", "sex": "man" }';

var data = eval( "(" + str1 + ")" );

alert( data.name);

注意:如果obj本来就是JSON对象,那么运用eval()函数后还是JSON对象,但是运用parseJSON()函数处理后会抛出语法异常。

二、JSON对象转换成JSON字符串的俩种方法

var last = obj.toJSONString(); //修改后的版本

或者

var last = JSON.stringify(obj);//修改前的版本

alert(last);

注意:

一,上面多个要领中,除了eval()函数是js自带的以外,其他的都需要json.js包。

二,新版本的JSON修改了API,将JSON.stringify()和JSON.parse()俩个要领都注入到javascript的内建对象里面,

       前者变成了Object.toJSONString(),而后者变成了String.parseJSON()。

        如果提示找不到toJSONString和parseJSON()要领,则说明您的json包版本太低。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值