开发手册 欢迎您!
软件开发者资料库

Prototype 和JSON教程

Prototype和JSON教程 - 从简单和简单的步骤学习Prototype,从基本到高级概念,包括概述,如何使用Prototype JavaScript框架操作DOM和AJAX,实用功能,实用方法,元素对象,数字处理,字符串处理,数组处理,哈希处理,基本对象,基本对象,枚举,事件处理,表单管理,JSON,AJAX,表达范围,定期执行。

JSON简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.

  • 人类可以轻松读写JSON.

  • JSON很容易被机器解析和生成.

  • JSON基于JavaScript编程语言的一个子集.

  • 所有API都使用JSON全部通过Web,可以快速替代Ajax请求中的XML.

  • JSON是一种完全独立于语言的文本格式.

Prototype 1.5.1及更高版本,具有JSON编码和解析支持.

JSON编码

Prototype提供以下编码方法;

注意 : 确保至少拥有prototype.js的1.6版本.

S.No.Method&说明
1.Number.toJSON()

返回给定Number的JSON字符串.

2.String.toJSON()

返回给定String的JSON字符串.

3.Array.toJSON()

返回给定数组的JSON字符串.

4.Hash.toJSON()

返回给定哈希的JSON字符串.

5.Date.toJSON()

Conv将日期转换为JSON字符串(遵循JSON使用的ISO格式).

6.Object.toJSON()

返回给定Object的JSON字符串.

如果您不确定所需的数据类型编码,你最好的选择是使用Object.toJSON所以 :

var data = {name: 'Violet', occupation: 'character', age: 25 };Object.toJSON(data);

这将产生以下结果 :

'{"name": "Violet", "occupation": "character", "age": 25}'

此外,如果您使用自定义对象,可以设置您自己的toJSON方法,该方法将由 Object.toJSON 使用.例如 :

var Person = Class.create();Person.prototype = {   initialize: function(name, age) {      this.name = name;      this.age = age;   },     toJSON: function() {      return ('My name is ' + this.name +          ' and I am ' + this.age + ' years old.').toJSON();   }};var john = new Person('John', 49);Object.toJSON(john);

这将产生以下结果 :

'"My name is John and I am 49 years old."'

解析JSON

在JavaScript中,解析JSON通常是通过评估JSON字符串的内容来完成. Prototype引入了 String.evalJSON 来处理这个问题.例如 :

var d='{ "name":"Violet","occupation":"character" }'.evalJSON();d.name;

这将产生以下结果 :

 "Violet"

在Ajax中使用JSON

在Ajax中使用JSON非常简单.只需在传输的responseText属性上调用 String.evalJSON  :

new Ajax.Request('/some_url', {   method:'get',   onSuccess: function(transport) {      var json = transport.responseText.evalJSON();   }});

如果您的数据来自不受信任的来源,请务必清理它并减去;

new Ajax.Request('/some_url', {   method:'get',   requestHeaders: {Accept: 'application/json'},   onSuccess: function(transport) {      var json = transport.responseText.evalJSON(true);   }});