### JSON入门基础教程:理解与应用 #### 一、JSON概览 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是基于JavaScript的一个子集,它使用了较少的符号表示数据结构,这使得它在数据传输时更节省空间,效率更高。 #### 二、JSON与XML对比 1. **结构简洁**:JSON的结构更加紧凑,减少了冗余,提高了数据传输效率。例如,一个简单的用户信息,在XML中可能需要大量的标签来表示: ```xml <request> <firstName>Brett</firstName> <lastName>McLaughlin</lastName> <email>brett@newInstance.com</email> </request> ``` 而在JSON中,则可以简化为: ```json { "firstName": "Brett", "lastName": "McLaughlin", "email": "brett@newInstance.com" } ``` 2. **语法简单**:JSON使用键值对的形式表示数据,类似于JavaScript的对象字面量,这使得它在JavaScript环境中更容易被理解和处理。 3. **性能优势**:JSON的解析速度通常比XML快,因为它避免了XML中的复杂解析过程,如DTD验证等。 #### 三、JSON的基本语法 - **对象**:由花括号包围的成对的键和值组成,键和值之间用冒号分隔,每对键值对之间用逗号分隔。 ```json {"key": "value"} ``` - **数组**:由方括号包围的一系列值组成,值之间用逗号分隔。 ```json ["item1", "item2"] ``` - **字符串**:由双引号包围的Unicode字符序列。 ```json "Hello, world!" ``` - **数值**:整数或浮点数。 ```json 42 ``` - **布尔值**:true或false。 - **null**:表示没有值。 #### 四、JSON示例 ```json { "people": [ { "firstName": "Brett", "lastName": "McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName": "Hunter", "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "elharo@macfaq.com" } ], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "sciencefiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christianfiction" } ], "musicians": [ { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ] } ``` #### 五、JSON在JavaScript中的使用 在JavaScript中,可以使用`JSON.parse()`方法将JSON字符串转换为JavaScript对象,使用`JSON.stringify()`方法将JavaScript对象转换为JSON字符串。 ```javascript // 将JSON字符串转换为JavaScript对象 const jsonString = '{"name":"John", "age":30, "city":"New York"}'; const obj = JSON.parse(jsonString); // 将JavaScript对象转换为JSON字符串 const obj2 = { name: "John", age: 30, city: "New York" }; const jsonString2 = JSON.stringify(obj2); ``` #### 六、结论 JSON作为数据交换的标准格式之一,因其简洁、高效的特点,广泛应用于Web开发、API接口通信等多个领域。掌握JSON的基础知识,对于从事IT行业的开发者来说是必不可少的技能。
如果您阅读了本系列前面的文章,那么应已对数据格式有了相当的认识。前面的文章解释了在许多异步应用程序中如何恰当地使用纯文本和简单的名称/值对。可以将数据组合成下面这样的形式:
firstName=Brett&lastName=McLaughlin&email=brett@newInstance.com
这样就行了,不需要再做什么了。实际上,Web 老手会意识到通过 GET 请求发送的信息就是采用这种格式。
然后,本系列讨论了 XML。显然,XML 得到了相当多的关注(正面和负面的评价都有),已经在 Ajax 应用程序中广泛使用。关于如何使用 XML 数据格式,可以回顾 本系列前面的文章:
<request> <firstName>Brett</firstName> <lastName>McLaughlin</lastName> <email>brett@newInstance.com</email></request>
这里的数据与前面看到的相同,但是这一次采用 XML 格式。这没什么了不起的;这只是另一种数据格式,使我们能够使用 XML 而不是纯文本和名称/值对。
本文讨论另一种数据格式,JavaScript Object Notation(JSON)。JSON 看起来既熟悉又陌生。它提供了另一种选择,选择范围更大总是好事情。
添加 JSON
在使用名称/值对或 XML 时,实际上是使用 JavaScript 从应用程序中取得数据并将数据转换成另一种数据格式。在这些情况下,JavaScript 在很大程度上作为一种数据操纵语言,用来移动和操纵来自 Web 表单的数据,并将数据转换为一种适合发送给服务器端程序的格式。
但是,有时候 JavaScript 不仅仅作为格式化语言使用。在这些情况下,实际上使用 JavaScript 语言中的对象来表示数据,而不仅是将来自 Web 表单的数据放进请求中。在这些情况下,从 JavaScript 对象中提取数据,然后再将数据放进名称/值对或 XML,就有点儿多此一举 了。这时就合适使用 JSON:JSON 允许轻松地将 JavaScript 对象转换成可以随请求发送的数据(同步或异步都可以)。
JSON 并不是某种魔弹;但是,它对于某些非常特殊的情况是很好的选择。
JSON 基础
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
简单 JSON 示例
按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:
{ "firstName": "Brett" }
这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:
firstName=Brett
但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
值的数组
剩余9页未读,继续阅读
- 粉丝: 21
- 资源: 51
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件