JSON定义
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。
JSON的结构基于下面两点
-
1. "名称/值"对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)等
-
2. 值的有序列表 多数语言中被理解为数组(array)
JSON使用:
JSON以一种特定的字符串形式来表示 JavaScript 对象。如果将具有这样一种形式的字符串赋给任意一个 JavaScript 变量,那么该变量会变成一个对象引用,而这个对象就是字符串所构建出来的,好像有点拗口,我们还是用实例来说明。
这里假设我们需要创建一个User对象,并具有以下属性
用户ID
用户名
用户Email
您可以使用以下JSON形式来表示User对象:
{"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
然后如果把这一字符串赋予一个JavaScript变量,那么就可以直接使用对象的任一属性了。
完整代码:
<script>
var User = {"UserID":11, "Name":"Truly", "Email":"zhuleipro◎hotmail.com"};
alert(User.Name);
</script>
实际使用时可能更复杂一点,比如我们为Name定义更详细的结构,使它具有FirstName和LastName:
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"}
完整代码:
<script>
var User = {"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"};
alert(User.Name.FirstName);
</script>
现在我们增加一个新的需求,我们某个页面需要一个用户列表,而不仅仅是一个单一的用户信息,那么这里就需要创建一个用户列表数组。
下面代码演示了使用JSON形式定义这个用户列表:
[
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.com"}
]
完整代码:
<script>
var UserList = [
{"UserID":11, "Name":{"FirstName":"Truly","LastName":"Zhu"}, "Email":"zhuleipro◎hotmail.com"},
{"UserID":12, "Name":{"FirstName":"Jeffrey","LastName":"Richter"}, "Email":"xxx◎xxx.com"},
{"UserID":13, "Name":{"FirstName":"Scott","LastName":"Gu"}, "Email":"xxx2◎xxx2.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 的本质。
参考资料:
http://www.json.org/
分享到:
相关推荐
### 深入浅出JSON #### JSON定义与特点 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,其设计目标是为了提高数据的可读性和可编写性,同时保持机器解析和生成的便捷性。它基于ECMA262标准中的...
### JSON深入浅出用法 #### 一、JSON概述 **JSON**,即**JavaScript Object Notation**(JavaScript对象表示法),是一种轻量级的数据交换格式。它与**XML**等其他数据交换格式相比,拥有更高的数据传输效率,并且...
《Android开发深入浅出》是一本专为Android开发者量身打造的专业指南,无论你是初涉Android开发的新手,还是在该领域有一定经验的开发者,都能从中受益匪浅。这本书全面覆盖了Android平台的基础知识和高级技术,旨在...
《深入浅出 Android Google手持设备应用程序设计》这本书是Android开发者必备的参考资料,它全面而深入地探讨了在Google手持设备上构建应用程序的各种技术和策略。以下将详细解析书中的关键知识点: 1. **Android...
**深入浅出AJAX源码**,这是一份与AJAX技术密切相关的源代码资源,源自书籍《深入浅出AJAX》的配套光盘。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。...
本篇文章将深入浅出地探讨XML的核心概念、语法、解析方式以及在实际中的应用。 一、XML基本概念 XML源于HTML,但两者的主要区别在于HTML主要用于展示数据,而XML专注于描述数据。XML文档由元素(Element)、属性...
《深入浅出Android》是Android开发领域的一本经典著作,其简体中文版更是为国内开发者提供了方便的学习途径。这本书以其深入浅出的讲解方式,系统地介绍了Android平台的开发技术,适合初学者以及有一定经验的开发者...
《深入浅出Android代码》这一资源为Android开发者提供了一个全面且系统的代码库,涵盖了Android开发的各个重要方面。这份资源的特色在于其详尽的章节划分,使得学习者可以按部就班地深入理解Android应用开发的核心...
- **书籍名称**:《深入浅出 Python(中文版)》,英文原名为《Head First Python》。 - **作者介绍**:本书由Paul Barry撰写,他是一位拥有多年编程经验的专业人士,在Python和其他多种编程语言方面有丰富的实践...
《深入浅出iPhone开发》是一本专为iPhone应用程序开发初学者编写的指南,旨在通过实际应用案例,系统地介绍iOS开发的各项技术。本书的核心目标是让读者能够从零基础逐步掌握开发iPhone应用所需的知识和技能。 在iOS...
在"深入浅出Ajax"这本书中,作者深入讲解了Ajax的基本原理和实际应用。 **章节概览** 根据描述,这本书分为七章,每章可能涵盖以下关键知识点: 1. **第一章:初识Ajax** - Ajax的历史和概念 - Ajax工作原理的...
《深入浅出 Android》是一本深受开发者欢迎的学习教材,它以详实且易于理解的方式,全面解析了Android操作系统的核心概念和技术。这本书旨在帮助初学者快速掌握Android开发,并为有经验的开发者提供深入的理解和技巧...
### 深入浅出REST #### REST简介与核心价值 在《深入浅出REST》这篇文章中,作者Stefan Tilkov通过清晰且易于理解的方式介绍了REST(表述性状态转移)这一概念及其在现代软件架构中的应用。随着互联网技术的发展,...
《深入浅出Google Android》是一本专为Android初学者设计的指南,旨在为读者提供一个清晰、全面的Android系统理解框架。这本书不仅包含了基础概念,还深入探讨了Android开发的关键技术,帮助那些在其他Android书籍中...
### 深入浅出Greasemonkey优化 #### 1. 开始 ##### 1.1 Greasemonkey是什么? Greasemonkey是一个专为Mozilla Firefox设计的浏览器扩展插件,它允许用户通过自定义JavaScript脚本来改变网页的行为与功能。通过...
《深入浅出Android》是一本深受开发者欢迎的Android技术书籍,它旨在帮助读者全面理解Android系统的工作原理,以及如何高效地开发Android应用。这本书涵盖了从基础到高级的多个层次,适合初学者和有一定经验的开发者...
随后,ES5作为较为温和的版本发布,并引入了Object.create()、Object.defineProperty()、getters/setters、严格模式和JSON对象等改进。ES5虽然有所改进,但影响并不深入。相比之下,ES6则带来了更为深远的变革。 3....
### ASP.NET AJAX深入浅出系列课程之客户端访问WebService(下) #### 重要知识点解析 **一、改变客户端访问时的方法名** 在客户端访问WebService时,由于JavaScript语言的限制,无法直接支持方法重载(overload...