JSON3-翻译(不当之处,请指正)

http://bestiejs.github.io/json3/
JSON 3 显示了两个功能:stringify():序列化一个javaScript值为一个JSON,和parse():将一个json字符串转换成一个JavaScript对象.这是对JSON2的一个嵌入式替换.这个函数完全遵照ECMAScript的规范描述.除了日期的序列化差异.JSON3没有使用eval和正则表达式.这里在过时和移动的环境里提供了很好的安全性和性能优势.

对比JSON2 发生的改变:
json3...
    1.正确的序列化原始包装对象。
    2.序列化环状结构时,抛出一个TypeError(JSON2直到递归调用堆栈溢出)
    3.利用功能测试,检测损坏的或不完整的原生JSON实现(JSON2只检查的本地函数的存在).测试只在运行时执行一次,所以有分析或序列化值时,没有额外的性能开销。
相反,对比JSON2,JSON3没有的是...
    1.给Boolean, Number, and String 原型添加toJSON()方法.这些都不是任何标准的一部分,并且使 stringify()的设计实现变的多余.
    2.给 Date.prototype添加toJSON() or toISOString()方法.具体查下下面的日期.

Date 序列化:
    1.JSON3偏离规范的重要途径之一:它并没有定义Date#toISOString() 或者 Date#toJSON()方法.这里保留了一般JS的兼容性,同时避免了污染本来的原型(prototypes).相反的,date序列化是有stringify()实现内部执行的.如果一个date对象没有定义传统的toJSON()方法,它被序列化为一个简单iso 8601 日期字符串.
    2.几个本地的Date#toJSON()方法生成日期时间字符串在规范上并不符合语法:例如,Safari4的所有版本以及JSON2,不能正确序列扩展的年.另外,JSON2和旧的实现省略了日期时间字符串毫秒.(在ES 5中是可选择的,在5.1中是必须要求的.)最后在 Safari 4和5的所有版本中,序列化一个无效的日期会产生一个"Invalid Date",而不是null;因为这些环境显示出其他序列化的错误,但是,JSON3将覆盖本地字符串化()实现。

使用:
   页面展示:

<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浏览器中使用时,JSON3公开了一个额外的JSON3对象包含noConfict()和renlnContext()函数,以及别名以stringify()和parse()函数.
noConfict()和renlnContext()函数:
    .JSON3.noConflict() 还原全局JSON对象的原始值,返回一个引用JSON3对象
    .JSON3.runInContext([context, exports])使用给定上下文对象初始化JSON3,(e.g., window, global, etc.), 或全局对象,如果忽略.如果指定了出口对象,stringify(), parse(), 和 runInContext() 函数将会附着它来代替一个新的对象.
异步模块装载机:
    JSON3 被定义为一个匿名模块兼容RequireJS.js,curl.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>

为了避免与第三方脚本的问题,JSON3导出到全局范围,即使在模块加载器中使用.如果这种行为是不希望的,JSON3.noConflict()可用于全局JSON对象恢复到其原始值。
注:如果您打算使用JSON3旁边另一个模块,请不要简单地串连这些模块组合在一起,因为这将导致一个脚本重复定义调用,导致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}‘

兼容性:
    JSON3已经在web浏览器,CommonJS环境和JavaScript引擎.
    Web浏览器:
        1.IE6.0或者更高版本
        2.火狐1.0版本或者更高
        3.Safari2.0版本或者更高
        4.Opera7.02版本或者更高
        5.Mozilia1.0,Netscape6.2.3,SeaMonkey1.0或者更高版本.
    CommonJS环境:
        1.Node0.2.6或者更高版本
        2.RinqoJS0.4或者更高版本
        3.Narwhal0.3.2或者更高版本
    JavaScript引擎:
        1.Mozilia Rhino1.5R5或者更高版本
        2.WebKitJSC
        3.Google V8
        
已知的不兼容:
    试图序列化参数对象可能会跨环境产生不一致的结果,由于规范版本的差异.作为一种变通方法,请首先转换参数对象到一个数组:JSON.stringify([].slice.call(arguments, 0)).

所需的本地方法:
    JSON3假设下面的方法存在,并且和ECMAScript规范中的功能描述一样.
    
    The Number, String, Array, Object, Date, SyntaxError, and TypeError constructors.
    String.fromCharCode
    Object#toString
    Function#call
    Math.floor
    Number#toString
    Date#valueOf
    String.prototype: indexOf, charCodeAt, charAt, slice.
    Array.prototype: push, pop, join.

时间: 2024-11-10 01:51:28

JSON3-翻译(不当之处,请指正)的相关文章

【不定期更新】noip复习(或许有误请指正)

一.基本算法 2.二分查找 void find(int l,int r){ if (l>r || a[l]>x || a[r]<x) return; int mid = (l+r) >> 1; if (a[mid] == x){ if (mid < pos)pos=mid; if (a[mid-1] == x) find(l, mid-1); if (a[mid+1] == x) find(mid+1, r); return; } if (x > a[mid])

官方翻译不当导致的PowerShell运行失败一例

今天我在PowerShell.com看到一篇文章,是关于Gridview的应用,觉得挺好,决定自己尝试一下.但是实际操作的时候却失败了,然后开始了漫长的排错. http://powershell.com/cs/blogs/tips/archive/2012/01/13/create-own-driver-tool.aspx 首先我们运行一下,报错如下,说"状态"这个字段已经存在,这是什么鬼? 在命令中,用到了一个参数 ConvertFrom-Csv ,它会把数据格式化成csv的样式,也

菜菜菜鸟学习之JavaWeb 入门1(自己的学习理解,不对之处请大神们多多指教啊)

一.相关基础知识 1.C/S(Client/Server)架构和B/S(Browser/Server)架构 首先说C/S架构,简单讲其实很常见,类似QQ等需要下载客户端的应用程序就是建立在C/S架构中.往深一点讲,它是分布式架构,每个客户端直接连接数据库服务器,并且数据的处理需要依赖客户端,所以说我们经常见到QQ用着用着就卡死了.这么一来,软件开发时选择C/S架构会出现以下问题: 1)所有客户端并发连接数据库,这直接限制客户端程序同时运行的数量. 2)需要安装,麻烦.(不过,这阻挡不了现在各种A

Apple 人机界面指南 文档阅读摘要

对官方文档 Designing for iOS 的翻译,有不当之处请指正 官方文档地址 iOS 体现的主题 Deference (顺从,尊重) UI帮助我们来理解内容,并与内容进行交互,但是不会影响内容的展示 Clarity (清晰,明了) 无论在那种尺寸下,文本都是容易识别的:头像也是很容易分辨出来的;装饰的小零件也是很精巧并且很合适的:设计的目的是一下就能关注到它的功能 Depth (深度) 视觉层次和现实中的运用给与了生命力,增加了人们的幸福感和理解力 无论你是重新设计一个旧的app还是重

【译】Android 7.0 for Developers

译者注: 译者:aroundme 原文地址:https://developer.android.com/about/versions/nougat/android-7.0.html 主要是介绍Android 7.0提供新特性. 翻译的动机主要是为了适配Android 7.0,提前踩点.防止大坑. 就翻译来看,除去一些可有可无的更新之外,关注点主要是集中在四点: * 通知栏一系列更新 * 对于应用后台优化(或者说限制) * WebView持续性更新(混合开发需要注意) * 对于GPU的优化,优化3

solrj

solrj是一个很容易使java应用程序和solr进行交互的一个API,solrj隐藏了很多连接Solr的细节,允许你的应用程序使用简单的高级方法和solr互动交流. solrj的核心就是 org.apache.solr.client.solrj包,下面包含了5个主要类.通过创建一个SolrServer开始,这个SolrServer就是你索要使用的solr实例,然后发出SolrRequests或者是SolrQuerys,最后返回SolrResponses. SolrServer是一个抽象类,所以

斯坦福大学卷积神经网络----Module 1 Lesson 1 图像分类

原文地址:http://cs231n.github.io/classification/ 标题:Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits 随手翻译,不当之处请指正 图像分类 动机:在这个部分我们会介绍图片分类问题,这是一个为输入图片从一系列分类中挑选一个合适的标签的过程.这是计算机视觉的核心问题之一,除了它看上去的简单外表之外,还有非常多的实际应用之处.除此之外,后面

SQL Server三种表连接原理

http://msdn.microsoft.com/zh-cn/library/dn144699.aspx 简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join这三种物理连接中的一种.理解这三种物理连接是理解在表连接时解决性能问题的基础,下面我来对这三种连接的原理,适用场景进行描述. 嵌套循环连接(Nested Loop J

安卓手机定位研究

Android 基站定位源代码 经过几天的调研以及测试,终于解决了联通2G.移动2G.电信3G的基站定位代码.团队里面只有这些机器的制式了.下面就由我来做一个详细的讲解吧. 1 相关技术内容 Google Android Api里面的TelephonyManager的管理. 联通.移动.电信不同制式在获取基站位置的代码区别. 通过基站的基本信息,通过Google Gears获取对应的GPS经纬度. 通过Google Map API根据GPS经纬度获取当前位置. 2 目前存在的几个问题 由于得到的