定义
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。
JSON的结构基于下面两点
- "名称/值"对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
- 值的有序列表 多数语言中被理解为数组(array)
使用:
JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。
这里假设我们需要创建一个User对象,并具有以下属性
用户ID
用户名
用户Email
您可以使用以下JSON形式来表示User对象:
{"UserID":11, "Name":"hualai", "url":"http://www.hualai.net.cn"};
然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。
完整代码:
<script>
var User ={"UserID":11, "Name":"hualai", "url":"http://www.hualai.net.cn"};
alert(User.Name);
</script>
实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有FirstName和LastName:
{"UserID":11, "Name":{"FirstName":"hua","LastName":"lai"}, "Email":"http://www.hualai.net.cn"}
完整代码:
<script>
var User ={"UserID":11, "Name":{"FirstName":"hua","LastName":"lai"}, "Email":"http://www.hualai.net.cn"};
alert(User.Name.FirstName);
</script>
现在我们增加一个新的需求,我们某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么这里就需要创建一个用户列表数组。
下面代码演示了使用JSON形式定义这个用户列表:
[
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"http://www.hualai.net.cn"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "http://www.hualaikj.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"http://www.tjbusiness.com"}
]
完整代码:
<script>
var UserList = [
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"http://www.hualai.net.cn"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "http://www.hualaikj.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"http://www.tjbusiness.com"}
];
alert(UserList[0].Name.FirstName);
</script>
事实上除了使用"."引用属性外,我们还可以使用下面语句:
alert(UserList[0]["Name"]["FirstName"]); 或者 alert(UserList[0].Name["FirstName"]);
现在读者应该对JSON的使用有点认识了,归纳为以下几点:
对象是属性、值对的集合。一个对象的开始于“{”,结束于“}”。每一个属性名和值间用“:”提示,属性间用“,”分隔。
数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
字符串和数字的定义和C或Java基本一致。
小节:
本文通过一个实例演示,初步了解了JSON 的强大用途。可以归结如下:
JSON 提供了一种优秀的面向对象的方法,以便将元数据缓存到客户机上。
JSON 帮助分离了验证数据和逻辑。
JSON 帮助为 Web 应用程序提供了 Ajax 的本质。
分享到:
相关推荐
JSON 是一种轻量级的数据交换格式。该文档详细介绍了JSON
sajson是C 11的轻量级,极高性能的JSON解析器
JSONCoder 是一个轻量级的通用的 Java 对象序列化和反序列化到 JSON 格式的工具包,类似 Jackson 或者 FastJson。这个库在 eBay 内部广泛使用多年。这并非是要替代其他常用库,主要是解决了一些其他库中不被支持的...
jq 是一个轻量级而且灵活的命令行 JSON 处理器。类似用于 JSON 数据的 sed 工具。
这是一个基于ThinkPHP的轻量级PHP开发框架设计,使用PHP语言开发,包含25个文件。主要文件类型包括10个PHP源文件、5个gitignore文件、2个Markdown文档、2个TXT文件、2个.htaccess文件、1个YAML文件、1个JSON文件和1...
TrivialDB 是一款轻量级的专门用于存放Key-Value形式的Json数据的持久化数据库,概念上它是lodash 封装了纯JS对象,便于版本同步。
14.1.1 JSON概述 JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式。它是基于JavaScript的一个子集,使用了C、C++、C#、Java、JavaScript、Perl、Python等其他语言的约定,采用完全独立...
metajson 非侵入性,高性能的C 17轻量级JSON序列化工具,专为易于使用和性能而设计。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集...
SuperKVC - iOS 轻量级 JSON 转 Model 框架,使用链式编程,无侵入
用于Lua的轻量级JSON库用于Lua的轻量级JSON库在纯Lua中实现:可与5.1、5.2、5.3和JIT Fast一起使用:通常优于其他纯Lua JSON实现(基准脚本)。小:大约280sloc,9kb正确的错误消息,例如:在第203行第30列的预期'}'...
zentaoPHP框架是禅道开发团队开发的一款轻量级的mvc框架,概念简单,结构良好,同时很注重对开发人员的友好,有深度的扩展机制。zentaoPHP框架成功的驱动了禅道团队三个产品,上百个功能模块的开发维护。 更新...
JJPHP(Just Return JSON) 是一个基于BSD开源协议发布的,快速、简单的面向对象的轻量级PHP开发框架。 该项目主要用于Web服务应用,如手机客户端的Server端,所以本身不提供View。如果要View可以用JVPHP。 ...
JSON(JavaScript Object Notation),是一种轻量级的基于文本且独立于语言的数据交换格式。它源于ECMAScript程序语言标准-第3版(ECMA-262 3rd Edition - December 1999)的子集,定义了便于表示结构化数据的一套...
功能完全支持JSON轻量级(仅2个文件)简单API用点表示法寻址json值(类似于大多数OO la中的C结构或对象)About Parson是一个用C语言编写的轻量级json库。功能全面支持JSON轻量级(仅2个文件)简单API用点表示法寻址...
Unirest是一个轻量级的HTTP请求库,涵盖Node、Ruby、Java、PHP、Python、Objective-C、.NET等多种语言。可发起GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS请求。 特性 1.能够伪造GET, POST, PUT, PATCH, DELETE,...
Gofasion是一个方便开发过程中接口JSON数据解析的轻量级解析库,其最大的特点在于支持链式调用,也就是说不必预先定义好数据的结构就可以直接获取到目标键名和键值。
Devkits 是一款轻量级桌面端应用,提供了一系列开发者工具,提高开发效率。 离线。类似的在线工具已经不少了,但是大多数都是在线的,网络不好的时候就很难用了。Devkits 提供了离线使用的功能,可以在没有网络的...