js json教程
(2008-12-20 18:39:12)
JSON是语言的一个核心特征,它提供了一种创建数组的对象图(object
graph)的简单机制。为了了解JSON,需要知道哦Javascript数组是如何工作的。我们首先来讨论一些关于他们的基础知识。
Javascript有一个内建的Array类,可以实用new 关键字初始化:
myLibrary.books=new Array();
数组有按照数字来分配的值,非常像传统的C或JAVA数组:
myLibrary.book[4] =somePredefinedBook;
数组也可以实用一个键值关联,像是JAVA的Map,实际上可以应用于任何javascript对象:
myLibrary.books["BestSeller"]=somePredefinedBook;
这种语法对于微调很有利,但是作为首选来创建一个大型的数组或者对象就很乏味了。创建一个数字索引的数组的快捷方法是实用方括号,将所有的成员写成一个用逗号分隔的值的列表。就像这样:
myLibrary.books={
bestSeller:predefinedBook1,
cookbook:predefineBook2,
spaceFiller:predefinedBook3
};
在两种符号中,会忽略额外的空白,这允许我们为了清晰期间对代码做很好的格式处理。键的内部也可以有空白,可以在JSON符号中实用引号来引用,例如:
“best
seller”:predefinedBook1;
我们可以通过嵌套JSON符号来创建复杂对象层次的单行定义(虽然会是很长的一行):
var myLibrary ={
location:"my house",
keywords:["root vegettables","turnip","tedium"],
books:[
{
title:"书名1",
authors:
[
{ name:"作者1",age:32},
{name:"作者2",age:35}
],
publicationData:"发行日期"
},
{
title:"书名2",
authors:
[
{ name:"作者1",age:32},
{name:"作者2",age:35}
],
publicationDate:
new
Date(2002,11,05)
}
]
}
在这里我们给myLibrary对象分配了三个属性:location是一个简单的字符串;keywords是一个按数字索引的字符串列表;books是一个按数字索引的对象列表,每个对象有标题(字符串),发布日期(代表javascript
Date对象的字符串)和作者列表(数组)。每个作者由name和age参数来代表,JSON为我们提供了简练的机制来以单一的途径创建这些信息,否则就会花费很多行代码(以及更多的带宽)。
目光敏锐的朋友已经注意到,我们实用javascript
Date对象来生成第2本书的发布日期。事实上,我们可以实用任何javascript代码来赋值,甚至是自定义函数:
function gunpowderPlot(){
return new
Date(2007,01,24);
}
var volNum=“代码大全";
var turnipVol2={
title:"工具书:"+volNum,
authors:[
{name:"作者",age:35},
publicationDate:gunpowderPlot()
]
};
在这里,书的标题实用内嵌的表达式来计算,publicationDate设置为从预先定义的函数的返回值。
在前面的例子中。我们定义了函数gunpowderPlot(),该函数在对象创建时求值。我们也可以为使用JSON创建的对象定义成员函数,它在稍后可以通过该对象来调用:
var turnipVol2={
title:"工具书:"+volNum,
authors:[
{name:"作者",age:35},
publicationDate:gunpowderPlot()
]
bookprice:function(num){
if(!len){len=7;}
var p=this.title+"by"+this.author[0].name+"price:";
p+=num;
alert(p);
|