Prototype JSON 教程

JSON简介

JSON(JavaScript 对象表示法)是一种轻量级数据交换格式。

  • JSON 易于人类读写。
  • JSON 很容易被机器解析和生成。
  • JSON 基于 JavaScript 编程语言的一个子集。
  • JSON 尤其被整个 Web 的 API 使用,并且是 Ajax 请求中 XML 的快速替代品。
  • JSON 是一种完全独立于语言的文本格式。

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

JSON编码

Prototype 提供了以下编码方法。

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

编号方法及说明
1.Number.toJSON()
返回给定数字的 JSON 字符串。
2.String.toJSON()
返回给定字符串的 JSON 字符串。
3.Array.toJSON()
返回给定数组的 JSON 字符串。
4.Hash.toJSON()
返回给定哈希的 JSON 字符串。
5.Date.toJSON()
将日期转换为 JSON 字符串(遵循 JSON 使用的 ISO 格式)。
6.Object.toJSON()
返回给定对象的 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 29 years old."'

解析 JSON

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

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

这将产生以下结果:

"Violet"

将 JSON 与 Ajax 结合使用

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

作者:terry,如若转载,请注明出处:https://www.web176.com/prototype/8229.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2023年1月17日 下午5:54
下一篇 2023年1月17日 下午6:39

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注