`

JSON — JavaScript中的JSON

阅读更多
  • 作者:Douglas Crockford
  • 原文网址:http://www.json.org/js.html
  • 译者:可爱的猴子

JavaScript 这种编程语言首要的目的是为Netscape Navigator提供一种页面脚本语言。它仍被普遍的认为是Java的一个子集,但事实并非如此。 它是一种语法类似c语言 并且支持面向对象Scheme -like语言。JavaScript使用了ECMAScript语言规范第三版 进行了标准化。

JSON是JavaScript面向对象语法的一个子集。由于JSON是JavaScript的一个子集,因此它可清晰的运用于此语言中。

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

 

上面的示例,创建了一个包括单独成员”bindings”的对象,此成员包括一个含有三个对象(”ircEvent”, “method”, 与 “regex”)的数组

成员可以通过.或者下标操作符检索。

myJSONObject.bindings[0].method    // "newURI"

为了将JSON文本转换为对象,可以使用eval()函数。eval()函数调用JavaScript编辑器。由于JSON是JavaScript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生JavaScript的语法歧义。

var myObject = eval('(' + myJSONtext + ')');

eval函数非常快速。它可以编译执行任何JavaScript程序,因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用eval函数。这样可以更安全的使用JSON解析器。使用XMLHttpRequest的web应用,页面之间的通讯只允许同源,因此是可以信任的。但这却不是完善的。如果服务器没有严谨的JSON编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效JSON文本。eval函数将执行恶意的脚本。

使用JSON解析器可以防止此类事件。JSON解析器只能辨识JSON文本,拒绝所有脚本。提供了本地JSON支持的浏览器的JSON解析器将远快于eval函数。预计未来的ECMAScript标准将支持本地JSON。

var myObject = JSON.parse(myJSONtext, reviver);

一个替换函数(reviver function)做为可选参数被最终结果的每一级的键(key)与值(value)调用。 每个值都将被替换函数的值代替。这可以用来将一般的类改变成伪类的实例,或者将日期字符串转变为日期对象。

myData = JSON.parse(text, function (key, value) {
    var type;
    if (value && typeof value === 'object') {
        type = value.type;
        if (typeof type === 'string' && typeof window[type] === 'function') {
            return new (window[type])(value);
        }
    }
    return value;
});

JSON stringifier进行反向操作,可以把JavaScript数据结构转换为JSON文本。JSON不支持循环数据结构,因此应小心不要为JSON stringifier提供循环结构。

var myJSONText = JSON.stringify(myObject, replacer);

如果stringify函数发现一个带有toJSON方法的对象,它将执行此方法,并且返回产生的值。这样一个对象就可以决定自己的JSON表现。

stringifier方法可以携带一个可选的字符串数组。这些字符串被用于选择包括在JSON文本中的属性。

stringifier方法可以携带一个可选的替代(replacer)函数。它将在结构中每个值的toJSON方法(如果有的话)后面执行。它将每个键与值做为参数传递,当然对象要包含这个键。值将被stringified返回。

如果没有提供数组或替代函数,一个用于忽略被集成的属性的可选替代函数将被提供。如果想要所有被继承的属性,可以提供一个简单的替换函数:

var myJSONText = JSON.stringify(myObject, function (key, value) {
    return value;
});

值在JSON中不代表任何内容,函数与未定义(undefined)被排除在外。

不能确定的数量将被替换为null。为了替代其它的值,可以像下面一样使用替换(replacer)函数

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}

开放源代码的JSON解析器与JSON stringifier可以使用。 通过minified 可以小于2.5K。

分享到:
评论

相关推荐

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】。JavaScript中解析JSON的js包,页面中引入json3.js,即可使用。 使用方法:JSON.parse(str), JSON.stringify(obj) 更多详情请参考博文: ...

    JavaScript and JSON Essentials

    JavaScript and JSON Essentials is a step-by-step guide that will introduce you to JSON and help you understand how the lightweight JSON data format can be used in different ways either to store data ...

    [JSON] JavaScript & JSON 核心技术 (英文版)

    [Packt Publishing] JavaScript & JSON 核心技术 (英文版) [Packt Publishing] JavaScript and JSON Essentials (E-Book) ☆ 图书概要:☆ Successfully build advanced JSON-fueled web applications with this ...

    jsoneditor_javascript_JSON_jsoneditor9.1.4_json-editorjs_

    功能强大的 json editor 源代码,使用 javascript 编写

    javascript对象转换成json

    支持将自身转换成json字符串输出

    Javascript解析JSON数据

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

    Json+javascript歌曲清单源码

    Json+javascript歌曲清单源码 项目介绍: 1.服务器接受请求 后台一般处理程序,将音乐文件夹里, 音乐信息转换问Json字符串发送到客户端; 2.客户端将字符串转换为Json对象,将其绑定到页面上; 3.借用雅虎的播放器插件,将...

    JavaScript的json封装

    因项目需求,自己拼接麻烦,所以将javascript拼接json封装成和java类似的操作,直接put() 与 get() 就可以使用,支持json数组,使用的时候只需要 创建对象 并赋值 然后调用内部参数即可,源码中有示例。因为删除操作...

    JavaScript 中处理JSON

    JavaScript 中处理JSON

    JavaScript JSON Cookbook mobi

    JavaScript JSON Cookbook 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Javascript Json包

    javascript 解析json必备利器 JSON.parse(str) JSON.stringify(jsonObj) 等等经典方法扩展。

    JSON使用指南JSON 即 JavaScript Object Natation

    JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。

    javascript json数据解析工具json2.js

    json2.js,包JSON-js-master.zip包,json数据解析javascript工具

    一个用于将JSON数据转换为Table的JavaScript库

    一个用于将JSON数据转换为Table的JavaScript库

    javascript读取Json数据分页显示

    支持键盘和滚轮翻页的javascript读取Json数据分页显示

    json安装包

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它基于JavaScript(Standard ECMA 262 3rd Edition December 1999)的一个子集 JSON采用完全独立于语言的文本格式 但是也使用了类似于C语言家族的习惯...

    XML to JSON and JSON to XML converter

    XML to JSON and JSON to XML converter

    jsoneditor/JSON编辑器 、html + script

    JSON编辑器是一个基于web的工具,用于查看、编辑、格式化和验证JSON。它有各种模式,如树编辑器、代码编辑器和纯文本编辑器。编辑器可以用作您自己的web应用程序中的组件。它可以作为CommonJS模块、AMD模块或常规...

    json4lua, JSON ( Javascript对象表示法 http.zip

    json4lua, JSON ( Javascript对象表示法 http json4lua用于Lua的JSON和 JSONRPC安装luarocks install --server=http://rocks.moonscript.org/manifests/amrhassan --local js

    JavaScript中使用Json范例

    JavaScript中使用Json,具体效果和过程看博文 http://blog.csdn.net/evankaka/article/details/46741577

Global site tag (gtag.js) - Google Analytics