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 的本质。
分享到:
相关推荐
本篇文章将深入浅出地探讨XML的核心概念、语法、解析方式以及在实际中的应用。 一、XML基本概念 XML源于HTML,但两者的主要区别在于HTML主要用于展示数据,而XML专注于描述数据。XML文档由元素(Element)、属性...
在"深入浅出Ajax"这本书中,作者深入讲解了Ajax的基本原理和实际应用。 **章节概览** 根据描述,这本书分为七章,每章可能涵盖以下关键知识点: 1. **第一章:初识Ajax** - Ajax的历史和概念 - Ajax工作原理的...
本教程《深入浅出Ajax》旨在全面讲解Ajax技术的各个方面,帮助读者掌握这一强大的工具。以下是一些关键知识点: 1. **XMLHttpRequest对象**:Ajax的核心就是XMLHttpRequest对象,它允许JavaScript在后台与服务器...
### 深入浅出REST #### REST简介与核心价值 在《深入浅出REST》这篇文章中,作者Stefan Tilkov通过清晰且易于理解的方式介绍了REST(表述性状态转移)这一概念及其在现代软件架构中的应用。随着互联网技术的发展,...
这本书《深入浅出Struts2》旨在帮助开发者深入理解这个框架的内部工作原理,以及如何有效地利用它来开发高效、可维护的web应用。 1. **Struts2框架基础** Struts2是Apache软件基金会的一个开源项目,它是Struts1的...
### 深入浅出Greasemonkey优化 #### 1. 开始 ##### 1.1 Greasemonkey是什么? Greasemonkey是一个专为Mozilla Firefox设计的浏览器扩展插件,它允许用户通过自定义JavaScript脚本来改变网页的行为与功能。通过...
"深入浅出AJAX源码"这个主题旨在帮助开发者理解AJAX的工作原理,通过源码分析来提升对AJAX的实际应用能力。 首先,我们从第2章的代码开始。这一章可能涵盖了AJAX的基础知识,包括创建XMLHttpRequest对象,这是AJAX...
《深入浅出Extjs(第三版)》这本书主要是对Ext JS的第4.2版本进行了详细介绍,同时对上一版本进行了修订。这使得这本书成为适合所有Web开发人员阅读的学习资料。Ext JS是一个用于构建交互式网页应用程序的前端...
根据提供的标题、描述和标签,我们可以看出这是一本关于ExtJS技术的书籍——《深入浅出ExtJS(第2版)》。虽然给定的部分内容并没有提供具体的技术细节,但根据书名及其版本号,我们可以推测这本书是针对ExtJS框架...
4. **XML和JSON**:尽管Ajax的全称中提到了XML,但实际上现在更多地使用JSON(JavaScript Object Notation)来传输数据,因为它比XML更轻量级,解析速度更快,更易于JavaScript处理。 ### Ajax的工作流程 1. 创建...
本教程将深入浅出地讲解XML的基础知识,并提供实验指导,帮助新手快速掌握XML的核心概念。 XML的起源与特点: XML起源于1998年,由W3C(万维网联盟)发布,旨在替代HTML在数据传输中的局限性。XML的主要特点是: 1...
通过学习这本书"深入浅出Struts2.0",开发者不仅可以掌握Struts2的基本用法,还能了解其内在机制,从而更好地运用到实际项目中。书中可能涵盖了上述所有概念的详细解释、实例演示以及最佳实践,有助于提升开发者在...
深入浅出EXTJS 的PDF 文档无疑是一个宝贵的资源,适合那些希望深入了解该框架的开发者。以下是对文档中提到的一些关键知识点的详细解释: 1. **Ext.data**:EXTJS 的数据模块是其核心组件之一,它提供了一种在...
### ExtJS深入浅出-基础Ajax教程 #### 引言 在现代Web开发领域中,Ajax(Asynchronous JavaScript and XML)技术已经成为实现网页局部刷新、提高用户体验的重要手段之一。本篇教程将基于ExtJS框架,从零开始介绍...
### 深入浅出Resuful:REST与RESTful HTTP应用集成 #### REST:表述性状态转移 在探讨REST的精髓之前,我们先要理解REST(REpresentational State Transfer,表述性状态转移)的基本概念。REST是一种软件架构风格...
【深入浅出WebService】这篇文章是面向初学者的指南,旨在帮助读者理解并熟悉WebService的基本概念和技术。WebService是一种基于Web的服务,允许不同系统间通过网络进行通信和数据交换,以实现跨平台、跨语言的互...
**AJAX 深入浅出** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,极大地提升了用户体验。...
《深入浅出Ajax源码》是一本专注于解析Ajax技术核心原理的书籍,旨在帮助读者从源头上理解并掌握Ajax的工作机制。Ajax,全称为Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需刷新整个网页的...
"深入浅出Ext.JS.徐会生例子"可能是徐会生先生撰写的一本关于Ext.JS的教程书籍或系列教学,其重点在于通过实例帮助读者理解和掌握Ext.JS的核心概念和技术。 首先,我们来看看Ext.JS的一些核心知识点: 1. **组件...
《深入浅出Android--Google手持设备应用程序设计》这本书是Android开发者深入理解平台和技术的重要参考资料。它涵盖了Android应用程序开发的各个方面,旨在帮助读者从基础到高级,全面掌握Android应用设计和实现的...