您的位置:首页 > Web前端 > JavaScript

JSON in JavaScript

2007-12-25 10:06 239 查看




JSON in JavaScript

JavaScript 是一种被介绍为运行在网景浏览器上,面向目的的页面脚本编程语言。很多人认为它是Java的一个子集,但它不是。它是一种方案--是一种类似于C语言的语法并且弱类型的语言。JavaScript在ECMAScript Language Specification, Third Edition.里面被标准化。

JSON是脚本目标原义标记的一个子集。因为JSON是脚本的一个子集,所以你可以毫无疑问地使用它。

var myJSONObject = {"bindings": [

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

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

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

]

};

在这个示例里,程序创建了一个对象,这个对象只有一个"bindings"成员。这个"bindings"成员有一个包含了三个对象的数组,每个对象都包含了"ircEvent","method","regex"成员。

成员可以通过使用小圆点或下标来获取。例如通过myJSONObject.bindings[0].method就能获取倒"newURI"成员。

myJSONObject.bindings[0].method // "newURI"

可以使用eval()函数将一个JSON文本转化为一个对象。eval()函数负责调用脚本编译器。因为JSON是脚本的一个专属子集,所以编译器将正确地解析文本并且创造一个类结构。

var myObject = eval('(' + myJSONtext + ')');

Eval函数是非常快的。然而,它可以编译并执行任何脚本程序,因此它可能会带来安全问题。只有源代码是被信任并合法的才可以使用eval函数。当网络服务器同时提供基页和JSON数据时,在网络应用程序里,这是非常普遍的。有时候源代码是不被信任的。事实上,客户端从不被信任。

当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全。JSON如下所示:

var myObject = JSON.parse(myJSONtext, filter);

可选的参数filter是一个函数。这个函数将被最终结果的每一层的每一个键和值调用。每一个值都将被filter函数的结果替代。这可以用于将一般的对象转化为一些特定对象的实例。如下所示:

myData = JSON.parse(text, function (key, value) {

return key.indexOf('date') >= 0 ? new Date(value) : value;

});

JSON stringifier则走向一个相反的方向,它将脚本数据转化为JSON文本。JSON不支持循环的数据结构,因此不要向JSON stringifier里传入循环的结构。

var myJSONText = JSON.stringify(myObject);

如果stringify方法遇到一个对象包含了toJSON方法,它就会调用这个方法,然后返回这个值。这样就允许一个对象去定义它自己的JSON代理。

Stringifier方法可以接收一个可选的字符数组。这些字符串被用来遴选包含在JSON文本里的属性。然而,对象的所有属性都将被包含在内。在任何情况下,JSON里的值如果没有代理将会被排除(例如函数和未定义)。

The open source code of a JSON parser and JSON stringifier is available. When minified it is less than 2K.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: