JavaScript高级程序设计 XML、Ajax 学习笔记(5)

③如果你是自己编写代码来对JSON求值,最好将输入文本放在一对圆括号中。因为eval()在对输入的文本求值时,是将其作为JS代码而非数据格式看待。在对以左花括号开头的对象求值时,就好像是遇到一个没有名字的JavaScript语句,会导致错误。将文本放在一对圆括号中可以解决这个问题,因圆括号表示值而不是语句。

var object1 = eval("{}");  //抛出错误

var object2 = eval("({})");  //没有问题

var object3 = eval("(" + jsonText + ")");  //通用解决方案

3.1在Ajax中使用JSON

①Douglas Crockford的JSON序列化器/解析器。

②在上述库中,有一个全局JSON对象,有两个方法:parse()和stringify()。

③parse()方法:

□两个参数:JSON文本和一个可选的过滤函数。在传入的文本是有效地JSON情况下,parse()方法返回传入数据的一个对象表示。

□例子:var object = JSON.parse("{}"); 与直接使用eval()不同的是,这里不需要传入的文本家圆括号(内部自动处理)。

□第二个参数是一个函数,这个函数以一个JSON键和值作为参数。要想让作为参数的键出现在结果对象中,该函数必须返回一个值。

var jsonText = "{\"name\":\"Nicholas\",\"age\":29,\"author\":true}";

var object = JSON.parse(jsonText,function(key,value){

switch(key){

case "age" : return value+1;

case "author" : return undefined;

default : return value;

}

});

alert(object.age);  //30

alert(object.author); //undefined

④JSON同样也是向服务器发数据的流行格式。发送数据时,一般会把JSON放到POST请求主体中,而JSON对象的stringify()方法正是为此而设计。

⑤stringify()方法:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdjpwj.html