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) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在JavaScript中,我们可以使用`JSON.stringify()`方法将JavaScript对象...
### JSON: JavaScript Object Notation #### 介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人类阅读和编写,并且易于机器解析和生成。JSON基于JavaScript编程语言标准ECMA-262第3版...
JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,同时也被广泛用于非JavaScript环境。JSON的设计目标是简洁和易于阅读及编写,同时也易于机器解析和生成。它是...
### JSON(JavaScript Object Notation) 示例解析 #### 一、JSON 概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于ECMAScript的一个子集...
在JavaScript中,对象转换成JSON(JavaScript Object Notation)是一种常见的数据交换格式,它轻量级、易读、易写,被广泛应用于Web应用程序之间传递数据。JSON格式是基于JavaScript的一个子集,但它并不是...
JavaScript Object Notation(JSON)是一种轻便的数据交换格式,它基于JavaScript的一个子集,设计时主要考虑到人类可读性及机器解析的高效性。JSON在Web服务和客户端应用中广泛用于数据传输,因为它能轻松地将数据...
JSON(JavaScriptObject...它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它基于JavaScript(Standard ECMA 262 3rd Edition December 1999)的一个子集 JSON采用完全独立于语言的文本格式 但是也使用了类似于C语言家族的习惯...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但不依赖于JavaScript,因此可以在各种语言中使用。 2. **Java中的...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON被广泛用作服务器与客户端之间数据传输的标准格式。它基于JavaScript的一个子集,...
JSON,全称JavaScript Object Notation,是由资深软件工程师Douglas Crockford提出的一种轻量级的数据交换格式。它基于JavaScript语法的一个子集,主要用于在Ajax(异步JavaScript和XML)中进行数据的传递,但XML并...
在JavaScript中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。处理JSON数据是Web开发中的常见任务,尤其是在与...
JavaScript中的JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但也使用了类似于C家族语言,包括C、C++、C#、Java、JavaScript、...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在JavaScript中,将对象序列化为JSON字符串是一个常见的需求,特别是在...
JSON(JavaScript Object Notation)是一种数据交换格式,它基于JavaScript语言的一个子集。JSON使用人类可读的文本来表示数据对象,易于理解和编写,并且可以跨平台和跨语言进行数据传输。它常用于将数据从服务器...
**JSON (JavaScript Object Notation)**:JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集。由于其简洁和直观的结构,JSON被广泛用于服务器向网页发送数据,尤其是在Ajax请求中。在JavaScript中,JSON...
- JSON是一种基于JavaScript子集的数据交换格式。 - 它使用键值对的形式存储数据,结构清晰易懂。 - JSON数据格式与JavaScript对象字面量类似,但有一些限制,例如属性名必须用双引号括起来。 2. **JSON的基本...
.net 将dataset转换为json的方法 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999...
在现代 Web 开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但作为一种独立的数据格式,它不仅仅用于...