首页
登录 | 注册

使用JSON

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);
                    }
}
};
......................
turnipVol2.bookprice("89元");

bookprice函数具有标准javascript函数所有的特征,例如参数以及用this关键字标识的上下文对象。事实上,一但对象创建了,它仅仅是另外一个javascript对象,只要我们喜欢,可以混合匹配实用javascript和JSON符号。
我们可以实用javascript来微调实用JSON声明的对象:
var numbers ={one:1,two:2,three:3};
numbers.four=4;

我们最初实用JSON语法来定义一个对象,然后实用普通的javascript增加属性。同样的,我们一可以使用JSON扩展Javascript所创建的对象:
var cookbook =new object();
cookbook.author={
    name:"ze";
    borthday:new Date(####,##,##),
    interests:["web design","sports","read"];
};

通过内建的javascript object和Array类以及JSON符号,可以创建我们喜欢的任何复杂的对象层,我们不需要其他任何东西。javascript也提供了创建对象的方法,为面向对象程序员提供了令人舒适的类定义和相似性。


相关文章

  • 用SBT和Play进行JSON序列化 本文主要讲述如何使用Play框架的JSON模块进行JSON的序列化和反序列化. JSON数据是非常常见的数据类型,基本上做项目就离不开JSON.在Scala语言中,要处理JSON有多种方法,既可以利用J ...
  • 将Chrome调试器里的JavaScript变量保存成本地JSON文件
    推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理器的替代者-Process Explorer 介绍一个强大的磁盘空间检测工具Sp ...
  • .net中输出json格式不对导致的bug
    前天用php调用另外一家公司的json接口时,出现很奇怪的问题 他们的接口是传入经纬度返回周边的经销商店信息,但是他们在广州测试没有问题,但是在我们在北京测试死活出不来,奇怪的是在纬度为39.9时出现不了结果,但是39.8时能够出现结果.当 ...
  • Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发. 1.遵循http://json.org标准,为其官方网站收录的参考实现之一. 2.功能qiang打,支持JDK的各种类型,包括基本的Java ...
  • 下面是借用网上的结果,我复制文本的时候,putty崩溃了,提示主要内容一样: /home/michell/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20160425-25421-vzm9hx. ...
  • 对比剖析Swarm Kubernetes Marathon编排引擎
    Docker Native Orchestration 基本结构 可用性 你只需要在其中的一个docker节点运行使用 docker swarm init命令创建一个集群,在您要添加任何其他节点,通过docker swarm join命令加 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号