`
zhangljerry
  • 浏览: 144413 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JSON,JavaScript Object Notiation

阅读更多
Ajax(Asynchronous JavaScript and XML)说到底就是一种浏览器异步读取服务器上XML内容的技术。现在的技术凡是跟XML扯上关系,再加上个概念做幌子,就像金装了一样,拽得不行。门外的人看得很是热闹,门里的人摇摇头不外如是。XML呢,跨平台的新潮语言?其实XML=TXT。XML只是符合很多规范的文本。它本身什么都不是,只是保存字符的文件。而浏览器异步读取的只是服务器上的文本内容,所以在Ajax开发时完全不必拘泥于XML。[版权所有,www.jialing.net]

JSON的来历

XML的作用是格式化数据内容。如果我们不用XML还有什么更好的方法吗?这个答案是JSON。介绍JSON之前我先介绍一下JavaScript这门脚本语言。脚本语言自身有动态执行的天赋。即我们可以把想要执行的语句放在字符串里,通过eval()这个动态执行函数来执行。字符串里的内容会像我们写的脚本一样被执行。
示例1:
引用
<HTML>
<HEAD>
<TITLE>eval example 1</TITLE>
</HEAD>
<BODY>
<script>
str = "alert('hello')";
eval(str);
</script>
</BODY>
</HTML>
打开页面会弹出hello窗口。
我们可以在字符串中放任何脚本语句,包括声明语句:
引用
<HTML>
<HEAD>
<TITLE>eval example 2</TITLE>
</HEAD>
<BODY>
<script>
define = "{name:'Michael',email:'17bity@gmail.com'}";
eval("data = "+define);
alert("name:"+data.name);
alert("email:"+data.email);
</script>
</BODY>
</HTML>
如果我们在后台异步传来的文本是JavaScript的声明语句,那么不是一条eval方法就能解析了?对于解析复杂的XML,这样的效率是多么大的提高啊!
现在就来告诉你什么是JSON:JavaScript Object Native。我更愿意把它翻译为JavaScript原始对象。比如要从后台载入一些通讯录的信息,如果写成XML,如下:
引用
<contact>
<friend>
<name>Michael</name>
<email>1e3bity@gmail.com</email>
<homepage>http://www.e-lines.com.cn</homepage>
</friend>
<friend>
<name>John</name>
<email>john@gmail.com</email>
<homepage>http://www.e-lines.com.cn</homepage>
</friend>
<friend>
<name>Peggy</name>
<email>xxx@gmail.com</email>
<homepage>http://www.e-lines.com.cn</homepage>
</friend>
</contact>
而写成JSON呢:
引用
[
friend: {
name:"Michael",
email:"17bity@gmail.com",
homepage:"http://www.e-lines.com.cn"
},
friend: {
name:"John",
email:"john@gmail.com",
homepage:"http://www.e-lines.com.cn"
},
friend: {
name:"Peggy",
email:"peggy@gmail.com",
homepage:"http://www.e-lines.com.cn"
}
]
简单的不只是表达上,最重要的是可以丢弃让人晕头转向的DOM解析了。因为只要符合JavaScript的声明规范,JavaScrip会自动帮你解析好的。Ajax中使用JSON的基本方法是前台载入后台声明JavaScript原始对象的字符串,用eval方法来将它转为实际的对象,最后通过DHTML更新页面信息。

JSON的格式

JSON的基本格式如下,图片来自json.org:
对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。
attachments/200701/06_090147_object.gif

数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
attachments/200701/06_090141_array.gif

值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
attachments/200701/06_090210_value.gif

字符串的定义和C或Java基本一致。
attachments/200701/06_090202_string.gif

数字的定义也和C或Java基本一致。
attachments/200701/06_090133_number.gif

JSON VS XML

可读性
JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

解码难度
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

流行度
XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous JavaScript and JSON)了。

附:
JSON.org : http://www.json.org/
JSON in JavaScript : http://www.json.org/js.html
JSON: The Fat-Free Alternative to XML : http://www.json.org/xml.html
JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript: http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html
Using JSON (JavaScript Object Notation) with Yahoo! Web Services: http://developer.yahoo.com/common/json.html
分享到:
评论

相关推荐

    Delphi中JSon SuperObject 使用数据集与JSON对象互转.docx

    Delphi 中使用 Json SuperObject 将数据集与 JSON 对象互转 在 Delphi 中,数据集是最常用的数据存取方式。因此,必须建立 JSON 与 TDataSet 之间的互转关系,实现数据之间的通讯与转换。为此,我们需要使用 Json ...

    JSON(JavaScript Object Notation)

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

    JSON(JavaScript Object Notation)简介

    JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,被广泛应用于网络服务间的数据传输以及存储数据。它的设计目标是简洁、易读、易写,同时也方便机器进行解析和生成。JSON 根植于 JavaScript ...

    javascript object to json string

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

    JSON使用指南JSON 即 JavaScript Object Natation

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,设计用于高效地传输和存储数据,尤其适合服务器与JavaScript之间的交互。它的语法简洁且易于人类阅读和编写,同时也容易让机器解析和生成。JSON格式...

    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) .zip

    JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。它采用完全独立于语言的文本格式,同时也易于人阅读和编写,同时也易于机器解析和生成。JSON被广泛应用于Web服务与客户端之间的数据交互,因为...

    json解析源码,纯c

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。它易于人阅读和编写,同时也易于机器解析和生成。本文将深入探讨一个纯C语言实现的JSON解析器——`...

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

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

    jsontoobject

    json 生成 解析 , ios ,android ,json , object to json

    javascript对象转换成json

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

    JSqlParser4.3版本作者补丁版用于解析mysql中JSON_OBJECT函数抛出ParseException异常

    用于JSqlParser4.3版本解析mysql中JSON_OBJECT函数抛出ParseException异常问题,如下: // this is true SELECT JSON_OBJECT(key person value account,key personName value account_name) obj FROM tb_review_...

    json安装包

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

    Delphi json superobject 支持XE10.3

    在Delphi编程环境中,SuperObject是一个非常流行的JSON库,它为开发者提供了高效、灵活的JSON解析和序列化功能。在Delphi XE10.3版本中,SuperObject的兼容性和支持是至关重要的,因为JSON作为一种轻量级的数据交换...

    Java JSON与Object互转源代码

    高效的JSON与Object互转的工具源代码,如果JSON数据未按该工具规定的数据格式转化成对象,将转化成java.util.Map实例。 (比JSON官方的API更适用。支持对象之间的多级引用,支持Map, List等集合。不需要引用其它中间...

    json-c-0.3.tar.gz_JSON_json linux_json-c_linux json

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输,因为其简洁、易读且易于编程处理。JSON-C是一个针对C语言的JSON库,它提供了在C程序中解析和生成JSON...

    c语言json数据格式解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。在C语言中,由于其没有内置的JSON解析库,因此需要使用第三方库来处理JSON数据。本篇文章将深入探讨...

    json-c-master_cjson_JSON_JSONC语言_json-c_

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,但也使用了类似于C语言家族的习惯。JSONC(JSON with comments)是JSON的一个扩展,允许在JSON数据中添加注释,...

Global site tag (gtag.js) - Google Analytics