`

JavaScript Object Notation (JSON) — JavaScript功能核心子集

阅读更多
JavaScript Object Notation ,以下简称JSON。

JSON提供了一种简约的机制来创建数字和对象图。这样做可以降低复杂性,一般傻瓜会这样做:
先申明一个对象数组,之后往数组里写值。如:

var school=new Object();
school.classes=new Array();
school.classes[1]="1班";
school.classes[2]="2班";
school.classes[3]="3班";


这样数组里嵌对象,对象里嵌数组的方法很不美观,也不可读。使用JSON就简单了。直接:

school.classes={
1:1班,
2:2班,
3:3班,
};


JSON采用了JAVA中MAP容器的做法,以“键:值”定义数组classes。当然,JSON还可以定义更加复杂的对象,可以说JSON就是天生为了构件这样复杂对象数组的。

有的时候还可以创建这样复杂的:
var myLibraryObject={
location:"my house",
keywords:["root","tedium"],
books:[
{title:"just go",
authors:[
{name:"yang",age:10},
{name:"wu",age:22}
],
Date:"longDate"
},
]
};


引用
对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。 数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。



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。


下面是对json对象的增删查改操作:

//声明json对象

var jsonObj2={persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}; 


var persons=jsonObj2.persons; 
var str=""; 
var person={name:"yaoMing",sex:"m",age:"26"}; 
//以下为json对象的操作,去掉注释可以查看操作结果 
//jsonObj2.persons.push(person);//数组最后加一条记录 
//jsonObj2.persons.pop();//删除最后一项 
//jsonObj2.persons.shift();//删除第一项 
jsonObj2.persons.unshift(person);//数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除 
//jsonObj2.persons.splice(0,2);//开始位置,删除个数 
//替换不删除 
var self={name:"tom",sex:"m",age:"24"}; 
var brother={name:"Mike",sex:"m",age:"29"}; 
jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数,插入对象 
//替换并删除 
//jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象 

for(var i=0;i<persons.length;i++){ var cur_person=persons[i]; str+=cur_person.name+"'sex is "+cur_person.sex+" and age is "+cur_person.age+"<br><br>"; } 
document.writeln(str); 
//转换为json文本 
var myjsonobj =  JSON.stringify(jsonObj2); 
document.writeln(myjsonobj); 
</script> 




引用

本文通过一个实例演示,初步了解了JSON 的强大用途。可以归结如下:

JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。
JSON 帮助分离了验证数据和逻辑。
JSON 帮助为 Web 应用程序提供了 Ajax 的本质。


后半部分内容全部转自:http://www.json.org/js.html;http://kingshare01.iteye.com/blog/235351
分享到:
评论

相关推荐

    JSON(JavaScript Object Notation)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立...

    javascript object to json string

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在JavaScript中,我们可以使用`JSON.stringify()`方法将JavaScript对象...

    JSON: JavaScript Object Notation

    ### JSON: JavaScript Object Notation #### 介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人类阅读和编写,并且易于机器解析和生成。JSON基于JavaScript编程语言标准ECMA-262第3版...

    JSON (JavaScript Object Notation).zip

    JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,同时也被广泛用于非JavaScript环境。JSON的设计目标是简洁和易于阅读及编写,同时也易于机器解析和生成。它是...

    JSON(JavaScript Object Notation)  示例.pdf

    ### JSON(JavaScript Object Notation) 示例解析 #### 一、JSON 概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于ECMAScript的一个子集...

    javascript对象转换成json

    在JavaScript中,对象转换成JSON(JavaScript Object Notation)是一种常见的数据交换格式,它轻量级、易读、易写,被广泛应用于Web应用程序之间传递数据。JSON格式是基于JavaScript的一个子集,但它并不是...

    JavaScript Object Notation

    JavaScript Object Notation(JSON)是一种轻便的数据交换格式,它基于JavaScript的一个子集,设计时主要考虑到人类可读性及机器解析的高效性。JSON在Web服务和客户端应用中广泛用于数据传输,因为它能轻松地将数据...

    JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式

    JSON(JavaScriptObject...它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

    json安装包

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

    jsoneditor_javascript_JSON_jsoneditor9.1.4_json-editorjs_

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON被广泛用作服务器与客户端之间数据传输的标准格式。它基于JavaScript的一个子集,...

    List转Json

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但不依赖于JavaScript,因此可以在各种语言中使用。 2. **Java中的...

    Ajax中数据传递的另一种模式 javascript Object Notation思想(JSON)

    JSON,全称JavaScript Object Notation,是由资深软件工程师Douglas Crockford提出的一种轻量级的数据交换格式。它基于JavaScript语法的一个子集,主要用于在Ajax(异步JavaScript和XML)中进行数据的传递,但XML并...

    javascript处理json字符串和json对象的类(含示例)

    在JavaScript中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。处理JSON数据是Web开发中的常见任务,尤其是在与...

    JavaScript中使用Json范例

    JavaScript中的JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但也使用了类似于C家族语言,包括C、C++、C#、Java、JavaScript、...

    将javascript序列化为json

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在JavaScript中,将对象序列化为JSON字符串是一个常见的需求,特别是在...

    C#的JavaScript和Json帮助类

    JSON(JavaScript Object Notation)是一种数据交换格式,它基于JavaScript语言的一个子集。JSON使用人类可读的文本来表示数据对象,易于理解和编写,并且可以跨平台和跨语言进行数据传输。它常用于将数据从服务器...

    javascript框架(json.jQuery.prototype).rar

    **JSON (JavaScript Object Notation)**:JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集。由于其简洁和直观的结构,JSON被广泛用于服务器向网页发送数据,尤其是在Ajax请求中。在JavaScript中,JSON...

    掌握数据交换语言:JavaScript中的JSON使用全解析

    - JSON是一种基于JavaScript子集的数据交换格式。 - 它使用键值对的形式存储数据,结构清晰易懂。 - JSON数据格式与JavaScript对象字面量类似,但有一些限制,例如属性名必须用双引号括起来。 2. **JSON的基本...

    我写的一个将dataset转换为json的方法

    .net 将dataset转换为json的方法 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999...

    JavaScript 中处理JSON

    在现代 Web 开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但作为一种独立的数据格式,它不仅仅用于...

Global site tag (gtag.js) - Google Analytics