📅  最后修改于: 2020-10-21 08:47:36             🧑  作者: Mango
JSON(JavaScript对象表示法)是一种轻量级的数据交换格式。
原型1.5.1和更高版本,具有JSON编码和解析支持。
原型提供以下编码方法-
注意–确保至少具有1.6版的prototype.js。
S.No. | Method & Description |
---|---|
1. | Number.toJSON()
Returns a JSON string for the given Number. |
2. | String.toJSON()
Returns a JSON string for the given String. |
3. | Array.toJSON()
Returns a JSON string for the given Array. |
4. | Hash.toJSON()
Returns a JSON string for the given Hash. |
5. | Date.toJSON()
Converts the date into a JSON string (following the ISO format used by JSON). |
6. | Object.toJSON()
Returns a JSON string for the given Object. |
如果您不确定需要编码的数据类型,最好的选择是使用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."'
在JavaScript中,解析JSON通常是通过评估JSON 字符串的内容来完成的。原型引入String.evalJSON来处理此问题。例如-
var d='{ "name":"Violet","occupation":"character" }'.evalJSON();
d.name;
这将产生以下结果-
"Violet"
将JSON与Ajax结合使用非常简单。只需在传输的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);
}
});