json3中文文档|json3 js中文教程|解析

npm npmdoc 3年前 (2021-10-30) 639次浏览

json3中文文档|json3 js中文教程|解析

安装命令:npm i json3

🚨 无人维护🚨

JSON 3 **已弃用**,**不再维护**。请不要在新项目中使用它,并迁移现有项目以使用原生的`JSON.parse` 和`JSON.stringify`。

感谢所有贡献补丁或发现它有用的人!❤️

JSON 3

无需维护

JSON 3是旧 JavaScript 平台的 JSON polyfill。

关于

JSON是一种基于 JavaScript 语法的松散子集的独立于语言的数据交换格式。最初由Douglas Crockford推广,该格式在 ECMAScript 规范的第五版中标准化。2011 年 6 月批准的 5.1 版对与日期序列化相关的语法进行了一些修改。

JSON 3 公开了两个函数:stringify()用于JavaScript 值序列化为JSON,以及parse()用于从 JSON 源字符串生成JavaScript 值。JSON 3 解析器使用递归下降而不是eval正则表达式,这使得它在旧平台上比JSON 2更慢这些函数的行为与 ECMAScript 规范中描述的完全一样,除了下面提到的日期序列化差异。

该项目单元测试一起托管在 GitHub 上它是BestieJS系列的一部分,该系列是一流的 JavaScript 库的集合,可促进跨平台支持、规范先例、单元测试和大量文档。

日期序列化

JSON 3 在一个重要方面偏离了规范:它没有定义Date#toISOString()Date#toJSON()这保留了 CommonJS 兼容性并避免污染本机原型。相反,日期序列化由stringify()实现在内部执行:如果日期对象未定义自定义toJSON()方法,则将其序列化为简化的 ISO 8601 日期时间字符串

几个本机Date#toJSON()实现产生符合规范中概述的语法的日期时间字符串在这些环境中,JSON 3 将覆盖本机stringify()实现。文件中有一个问题使这些测试不那么严格。

部分日期序列化代码改编自date-shim项目。

用法

网页浏览器

<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
<script>
  JSON.stringify({"Hello": 123});
  // => '{"Hello":123}'
  JSON.parse("[[1, 2, 3], 1, 2, 3, 4]", function (key, value) {
    if (typeof value == "number") {
      value = value % 2 ? "Odd" : "Even";
    }
    return value;
  });
  // => [["Odd", "Even", "Odd"], "Odd", "Even", "Odd", "Even"]
</script>

在 Web 浏览器中使用时,JSON 3 公开了一个JSON3包含noConflict()runInContext()函数的附加对象,以及stringify()parse()函数的别名

noConflictrunInContext

  • JSON3.noConflict()恢复全局JSON对象的原始值并返回对该JSON3对象的引用
  • JSON3.runInContext([context, exports])初始化JSON 3使用给定context对象(例如,windowglobal等),或全球的对象,如果删去。如果exports指定了一个对象,则stringify()parse()runInContext()函数将附加到它而不是一个新对象。

异步模块加载器

JSON 3被定义为匿名模块为了兼容RequireJScurl.js和其它异步模块装载机。

<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.js"></script>
<script>
  require({
    "paths": {
      "json3": "./path/to/json3"
    }
  }, ["json3"], function (JSON) {
    JSON.parse("[1, 2, 3]");
    // => [1, 2, 3]
  });
</script>

为避免第三方脚本出现问题,即使与模块加载器一起使用JSON 3 也会导出到全局范围如果此行为不受欢迎,JSON3.noConflict()可用于将全局JSON对象恢复为其原始值。

注意:如果您打算将 JSON3 与另一个模块一起使用,请不要简单地将这些模块连接在一起,因为这会导致define在一个脚本中进行多次调用,从而导致 AMD 加载程序出错。r.js构建优化器可以替代,如果你需要生产一个压缩文件中。

CommonJS 环境

var JSON3 = require("./path/to/json3");
JSON3.parse("[1, 2, 3]");
// => [1, 2, 3]

JavaScript 引擎

load("path/to/json3.js");
JSON.stringify({"Hello": 123, "Good-bye": 456}, ["Hello"], "\t");
// => '{\n\t"Hello": 123\n}'

兼容性

JSON 3已经测试与下面的Web浏览器,CommonJS的环境,和JavaScript引擎。

网页浏览器

CommonJS 环境

JavaScript 引擎

已知的不兼容性

  • arguments由于规范版本差异,尝试序列化对象可能会在不同环境中产生不一致的结果。作为一种变通方法,请转换arguments第一对象到一个数组:JSON.stringify([].slice.call(arguments, 0))

必需的本地方法

JSON 3 假设存在以下方法,并且其功能如 ECMAScript 规范中所述:

  • NumberStringArrayObjectDateSyntaxError,和TypeError构造。
  • String.fromCharCode
  • Object#toString
  • Object#hasOwnProperty
  • Function#call
  • Math.floor
  • Number#toString
  • Date#valueOf
  • String.prototype: indexOf, charCodeAt, charAt, slice, replace.
  • Array.prototype: push, pop, join.
项目issue数量: 16

项目贡献人员列表:


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:json3中文文档|json3 js中文教程|解析
喜欢 (0)
.excerpt .focus {display:none}