JSON 轻量级的数据交换格式
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。
在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。
JSON 为 Web 应用开发者提供了另一种数据交换格式。和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。
JSON的结构基于下面两点
- “名称/值”对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
- 值的有序列表 多数语言中被理解为数组(array)
服务器端,以PHP为例,我们可以很简单的返回JSON数据:
$arr={\'city\'=>\'beijing\',\'code\'=010};
echo json_encode($arr);
?>
JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的。
这里假设我们需要创建一个User对象,并具有以下属性
- 用户ID
- 用户名
- 网站
您可以使用以下JSON形式来表示User对象
{\"UserID\":100, \"Name\":\"biaodianfu\", \"website\":\"www.biaodianfu.com\"};
然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。
<script> var User = {\"UserID\":100, \"Name\":\"biaodianfu\", \"Website\":\"www.biaodianfu.com\"}; alert(User.Name); < SPAN>script>
实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有EnglishName和ChineseName:
{\"UserID\":100, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"};
完整代码:
<script> var User = {\"UserID\":100, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}; alert(User.Name.ChineseName); < SPAN>script>
如果某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么就需要创建一个用户列表数组。下面代码演示了使用JSON形式定义这个用户列表:
[ {\"UserID\":100, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}, {\"UserID\":101, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}, {\"UserID\":102, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}, ]
完整代码:
<script> var UserList = [ {\"UserID\":100, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}, {\"UserID\":101, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}, {\"UserID\":102, \"Name\":{\"EnglishName\":\"biaodianfu\",\"ChineseName\":\"标点符\"}, \"Website\":\"www.biaofianfu.com\"}, ]; alert(UserList[0].Name.ChineseName); < SPAN>script>
除了使用”.”引用属性外,还可以使用下面语句:
alert(UserList[0][\"Name\"][\"ChineseName\"]);
或者
alert(UserList[0].Name[\"ChineseName\"]);
JSON的一些规则:
- 对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。
- 数组是有顺序的值的集合。一个数组开始于”[\",结束于\"]“,值之间用”,”分隔。
- 值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
- 字符串和数字的定义和C或Java基本一致。
JSON的一些优点:
- JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。
- JSON 帮助分离了验证数据和逻辑。
- JSON 帮助为 Web 应用程序提供了 Ajax 的本质
参考网址:
http://www.json.org/json-zh.html
http://www.ibm.com/developerworks/cn/web/wa-lo-json/
http://zh.wikipedia.org/wiki/JSON
建议继续学习:
- JSON和JSONP的区别 (阅读:7664)
- XML和JSON (阅读:6690)
- 如何编写一个JSON解析器 (阅读:5403)
- 理解JSON:3分钟课程 (阅读:4784)
- 用 JavaScript 对 JSON 进行模式匹配 (Part 1 - 设计) (阅读:4386)
- 前端模板引擎 (阅读:3775)
- 用 JavaScript 对 JSON 进行模式匹配 (Part 2 - 实现) (阅读:3726)
- Ajax和WEB服务数据格式:JSON JSONP (阅读:3506)
- [python]定制JSON中的浮点数格式 (阅读:3020)
- Ajax和WEB服务数据格式:XML SOAP HTML (阅读:3021)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:标点符 来源: 标点符
- 标签: JSON 格式 轻量级
- 发布时间:2010-04-13 10:59:08
- [69] 如何拿下简短的域名
- [67] Go Reflect 性能
- [63] Oracle MTS模式下 进程地址与会话信
- [60] 【社会化设计】自我(self)部分――欢迎区
- [60] IOS安全–浅谈关于IOS加固的几种方法
- [59] 图书馆的世界纪录
- [57] android 开发入门
- [55] 视觉调整-设计师 vs. 逻辑
- [48] 界面设计速成
- [47] 读书笔记-壹百度:百度十年千倍的29条法则