您好,欢迎访问一九零五行业门户网

JavaScript中的JSON 中文版翻译_json

大家看可以先看下面的例子
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]
javascript这种编程语言首要的目的是为netscape navigator提供一种页面脚本语言。它仍被普遍的认为是java的一个子集,但事实并非如此。它是一种语法类似c语言并且支持面向对象的scheme-like语言。javascript使用了ecmascript语言规范第三版进行了标准化。
json是javascript面向对象语法的一个子集。由于json是javascript的一个子集,因此它可清晰的运用于此语言中。
复制代码 代码如下:
var myjsonobject = {bindings: [
{ircevent: privmsg, method: newuri, regex: ^http://.*},
{ircevent: privmsg, method: deleteuri, regex: ^delete.*},
{ircevent: privmsg, method: randomuri, regex: ^random.*}
]
};
上面的示例,创建了一个包括单独成员”bindings”的对象,此成员包括一个含有三个对象(”ircevent”, “method”, 与 “regex”)的数组
成员可以通过.或者下标操作符检索。
复制代码 代码如下:
myjsonobject.bindings[0].method // newuri
为了将json文本转换为对象,可以使用eval()函数。eval()函数调用javascript编辑器。由于json是javascript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生javascript的语法歧义。
复制代码 代码如下:
var myobject = eval('(' + myjsontext + ')');
eval函数非常快速。它可以编译执行任何javascript程序,因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用eval函数。这样可以更安全的使用json解析器。使用xmlhttprequest的web应用,页面之间的通讯只允许同源,因此是可以信任的。但这却不是完善的。如果服务器没有严谨的json编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效json文本。eval函数将执行恶意的脚本。
使用json解析器可以防止此类事件。json解析器只能辨识json文本,拒绝所有脚本。提供了本地json支持的浏览器的json解析器将远快于eval函数。预计未来的ecmascript标准将支持本地json。
复制代码 代码如下:
var myobject = json.parse(myjsontext, reviver);
一个替换函数(reviver function)做为可选参数被最终结果的每一级的键(key)与值(value)调用。 每个值都将被替换函数的值代替。这可以用来将一般的类改变成伪类的实例,或者将日期字符串转变为日期对象。
复制代码 代码如下:
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;
});
json stringifier进行反向操作,可以把javascript数据结构转换为json文本。json不支持循环数据结构,因此应小心不要为json stringifier提供循环结构。
复制代码 代码如下:
var myjsontext = json.stringify(myobject, replacer);
如果stringify函数发现一个带有tojson方法的对象,它将执行此方法,并且返回产生的值。这样一个对象就可以决定自己的json表现。
stringifier方法可以携带一个可选的字符串数组。这些字符串被用于选择包括在json文本中的属性。
stringifier方法可以携带一个可选的替代(replacer)函数。它将在结构中每个值的tojson方法(如果有的话)后面执行。它将每个键与值做为参数传递,当然对象要包含这个键。返回值将被字符串化。
如果没有提供数组或替代函数,一个用于忽略被集成的属性的可选替代函数将被提供。如果想要所有被继承的属性,可以提供一个简单的替换函数:
复制代码 代码如下:
var myjsontext = json.stringify(myobject, function (key, value) {
return value;
});
对于在json中没有表达的值(如函数与undefined)是排除在外的。
不能确定的数量将被替换为null。为了替代其它的值,可以像下面一样使用替换(replacer)函数
复制代码 代码如下:
function replacer(key, value) {
if (typeof value === 'number' && !isfinite(value)) {
return string(value);
}
return value;
}
开放源代码的json解析器与json stringifier可以使用。通过minified可以小于2.5k。
其它类似信息

推荐信息