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); }});