Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29954797
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2009-11-14 11:53:54

1、第一篇分析一下如何在JS里面去解析JSON这种数据交换格式的
var myJSONObject = {
                "bindings":[
                {"ircEvent":"PRIVMSG","method":"newURI1","regex":"^*"},
                {"ircEvent":"PRIVMSG","method":"newURI","regex":"^*"},
                {"ircEvent":"PRIVMSG","method":"newURI","regex":"^*"}               
                ]
               
            };
            alert(myJSONObject.bindings[0].method);
分析这段JSON代码:
定义一个对象。对象里面的是KEY-VALUE值。而这个值是一个数组。数组里面定义了多个对象对象。
{"ircEvent":"PRIVMSG","method":"newURI1","regex":"^*"}
这个对象有三个属性哦。
访问对象中的属性还是与原来的面向对象的方法是一样的即通过。运算符进行的。可以访问对象属性。
对象:通过点运算符进行访问。
数组是通过[]下标访问。

JSON text into an object, you can use the eval() function.
理解:定义了一个JSON的文本如何将其转换成一个对象呢?这个就需要用到JS里面的内置函数了即eval()
evel():该函数可以把一个字符串当作一个JavaScript表达式一样去执行它,具体来说,就是eval接受一个字符串类型的参数,
将这个字符串作为代码在上下文环境中执行,并返回执行的结果。
比如说:evel("3+4")
则返回了7.
接收到一个字符串参数然后依据这样的上下文进行相应的处理。返回了两个数字之和。

var myObject = eval('(' + myJSONtext + ')'); 这样就能够将一个JSON的文本表达式转换成一个对象了。

用这个方法有一个安全隐患。所以我们一般不推荐使用它。而是通过调用一个JSON自身带的一个编译器进来。

var myObject = JSON.parse(myJSONtext, reviver);
使用了JSON内置的一个解析器处理JSONTEXT文本。

myData = JSON.parse(text, function (key, value) {
var type;
if (value && typeof value === 'object') {
type = value.type;
if (typeof type === 'string' && typeof window[type] === 'function') {
return new (window[type])(value);
}
}
return value;
});
这个就是实现了如何将一个JSONTEXT转换成一个对象类型。
当然也可以将一个JSON对象的数据转换成一个JS文本了。

地址。
A JSON stringifier goes in the opposite direction, converting JavaScript data structures into JSON text.
将JS的对象变换回一个JSON文本。
var myJSONText = JSON.stringify(myObject, replacer); 利用JSON的内置方法实现转换。

以下分析一下在JS里面我们是如何去解析或者讲是如何处理JSON文本的?
下载 这个内置的JS的作用就是实现上面我们说的那样在JS文本与JSON对象之间的转换
处理!
调用此内置的JS包。可以拿出来一些直接的方法处理!
function Car(make,model,year,color){
this.make = make;
this.model=model;
this.year=year;
this.color=color;
}
function showCar(){
//alert("test");
var car = new Car("modge","cor",1986,"red");//构造对象
alert(car.toJSONString());//得到了一个JSON对象了。
}
showCar();
输出:
{"make":"modge","model":"cor","year":1986,"color":"red"} 输出一个JSON对象了。

因为JSON是JS的子集故而可以直接使用JS的内置方法eval将一个JS文本转换成一个JSON对象出来。
一般的AJAX在JS端调用的时候就能够:
var card = eval('(' + req.responseText + ')'); 得到了一个JSON对象了。那解析是非常方便的!
如果你想使用AJAX+WEB服务。即通过JS去访问WEB服务的话一般是传回XML然后进行解析处理。不过如果通过输出
JSON对象回来解析是非常方便的。要解析的就是将一个JSON对象解析成我们想要的。
JSON的聪明在于它是JavaScript和Python的子集!还是python的直接子集哦。这样的话在python里面是不需要
什么第三方的东西就能够直接解析了!

其中json.js中的一些API说明:
1、toJSONString 表示将JS里面的对象转换成为一个JSON对象。其作用与eval的功能是一样的!
例如:
var car = new Car("modge","cor",1986,"red");
document.write(car.toJSONString()); 输出:
{"make":"modge","model":"cor","year":1986,"color":"red"}
2、parseJSON 表示将一个JS的文本转换成为一个JSON对象输出。
例如:
var str = '{"name":"voilet","occ":"char"}';
var obj = str.parseJSON(); //将JS的文本转换成一个JSON对象了!
document.write(obj.toJSONString()); //这个JSON对象变成一个字符串!
输出:
{"name":"voilet","occ":"char"} //得到一个JSON文本出来!
一般的AJAX取回来的数据:var myobj = originalRequest.responseText.parseJSON();
将其解析成一个JSON对象。然后就可以来进行分析处理里面的数据出来!





阅读(1203) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~