解决IE6-8 JSON未定义错误:引入json2.js
"json2.js文件下载" 在JavaScript中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,同时也易于人阅读和编写,也易于机器解析和生成。然而,JSON API并非在所有环境中都原生支持,尤其是在较旧的浏览器如IE6、7、8中,由于这些版本的浏览器不内置JSON对象,因此在尝试使用JSON.stringify()方法将JavaScript对象转换为JSON字符串时,会抛出“JSON”未定义的错误。 为了解决这个问题,可以引入`json2.js`这个外部库。`json2.js`是由Douglas Crockford编写的,旨在为不支持ES5 JSON规范的老版本浏览器提供JSON的支持。这个库非常小巧,且无任何依赖,可以在HTML文件的<head>部分引入,如下所示: ```html <script src="json2.js"></script> ``` 引入后,`json2.js`会在全局范围内创建一个JSON对象,该对象包含两个关键方法:`stringify`和`parse`。 1. `JSON.stringify()`方法用于将JavaScript值(通常是对象或数组)转换为JSON字符串。它的参数如下: - `value`:要转换的JavaScript值。 - `replacer`:可选参数,用于确定如何序列化对象值。它可以是一个函数,或者是一个字符串数组,用来指定哪些属性应该被包含在序列化的结果中。 - `space`:可选参数,用于指定嵌套结构的缩进。如果省略,则会紧凑地输出,没有额外的空格。如果它是数字,它将指定每个级别的缩进空格数量。如果它是一个字符串,如`\t`或` `,则使用这些字符进行缩进。 2. `JSON.parse()`方法则相反,它用于将JSON字符串解析为JavaScript值。例如: ```javascript var jsonString = '{"name":"John", "age":30, "city":"New York"}'; var jsonObject = JSON.parse(jsonString); ``` 在这个例子中,`jsonString`被解析成了一个JavaScript对象`jsonObject`。 `json2.js`库对于那些需要在老版本浏览器中处理JSON数据的项目来说是至关重要的。它确保了JSON的兼容性,使得开发者可以在不受浏览器限制的情况下,自由地使用JSON进行数据交换。不过,对于现代浏览器(支持ES5及更高版本),通常不再需要这个库,因为它们内置了对JSON的原生支持。
// 2017-06-12
// Public Domain.
// NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
// USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
// NOT CONTROL.
// This file creates a global JSON object containing two methods: stringify
// and parse. This file provides the ES5 JSON capability to ES3 systems.
// If a project might run on IE8 or earlier, then this file should be included.
// This file does nothing on ES5 systems.
// JSON.stringify(value, replacer, space)
// value any JavaScript value, usually an object or array.
// replacer an optional parameter that determines how object
// values are stringified for objects. It can be a
// function or an array of strings.
// space an optional parameter that specifies the indentation
// of nested structures. If it is omitted, the text will
// be packed without extra whitespace. If it is a number,
// it will specify the number of spaces to indent at each
// level. If it is a string (such as "\t" or " "),
// it contains the characters used to indent at each level.
// This method produces a JSON text from a JavaScript value.
// When an object value is found, if the object contains a toJSON
// method, its toJSON method will be called and the result will be
// stringified. A toJSON method does not serialize: it returns the
// value represented by the name/value pair that should be serialized,
// or undefined if nothing should be serialized. The toJSON method
// bound to the value.
// For example, this would serialize Dates as ISO strings.
// Date.prototype.toJSON = function (key) {
// function f(n) {
// // Format integers to have at least two digits.
// return (n < 10)
// ? "0" + n
// : n;
// }
// return this.getUTCFullYear() + "-" +
// f(this.getUTCMonth() + 1) + "-" +
// f(this.getUTCDate()) + "T" +
// f(this.getUTCHours()) + ":" +
// f(this.getUTCMinutes()) + ":" +
// f(this.getUTCSeconds()) + "Z";
// };
// You can provide an optional replacer method. It will be passed the
// key and value of each member, with this bound to the containing
// object. The value that is returned from your method will be
// serialized. If your method returns undefined, then the member will
// be excluded from the serialization.
// If the replacer parameter is an array of strings, then it will be
// used to select the members to be serialized. It filters the results
// such that only members with keys listed in the replacer array are
// stringified.
剩余17页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展