### JSON入门基础教程:理解与应用 #### 一、JSON概览 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是基于JavaScript的一个子集,它使用了较少的符号表示数据结构,这使得它在数据传输时更节省空间,效率更高。 #### 二、JSON与XML对比 1. **结构简洁**:JSON的结构更加紧凑,减少了冗余,提高了数据传输效率。例如,一个简单的用户信息,在XML中可能需要大量的标签来表示: ```xml <request> <firstName>Brett</firstName> <lastName>McLaughlin</lastName> <email>[email protected]</email> </request> ``` 而在JSON中,则可以简化为: ```json { "firstName": "Brett", "lastName": "McLaughlin", "email": "[email protected]" } ``` 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": "[email protected]" }, { "firstName": "Jason", "lastName": "Hunter", "email": "[email protected]" }, { "firstName": "Elliotte", "lastName": "Harold", "email": "[email protected]" } ], "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 protected]
这样就行了,不需要再做什么了。实际上,Web 老手会意识到通过 GET 请求发送的信息就是采用这种格式。
然后,本系列讨论了 XML。显然,XML 得到了相当多的关注(正面和负面的评价都有),已经在 Ajax 应用程序中广泛使用。关于如何使用 XML 数据格式,可以回顾 本系列前面的文章:
<request> <firstName>Brett</firstName> <lastName>McLaughlin</lastName> <email>[email protected]</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": "[email protected]" }
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。
值的数组
剩余9页未读,继续阅读


- 粉丝: 21
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 光伏并网逆变器闭环控制及MPPT技术解析:基于MatlabSimulinkPLECS的锁相环、LC滤波与MPPT控制
- 西门子S7-1200 PLC Modbus RTU 485通讯主站程序设计与实现 · Modbus RTU
- 基于COMSOL仿真平台的石蜡加热熔化多物理场耦合仿真:模拟温度和流场变化的案例分析
- Tiomehsh-datasheet-ai-analyzer-30136-1755665338791.zip
- 光伏储能微电网中Boost电路MPPT与双向Buck-Boost变换器对直流母线电压的精确调控 · SVPWM 详解
- 96三相多功能表:全套电路与源码详解,高精度实时电力参数测量与分析系统
- 电力系统中有源电力滤波器(APF)的仿真验证及其直流电压控制研究 · 电力系统
- 分别使用OpenCV、ONNXRuntime部署多任务的yolov5目标检测+语义分割,包含C++和Python两个版本的程序
- 三菱电梯主板参数详解:楼层显示、基站设置等关键功能调整 权威版
- 天鹰优化算法AO优化核极限学习机KELM参数的多输入单输出拟合预测建模的Matlab程序
- 网络空间安全导论2023学习项目-涵盖网络安全基础密码学原理恶意软件分析入侵检测技术数据保护策略安全协议设计风险评估方法应急响应流程法律法规遵循安全意识培养攻防.zip
- 基于IEEE33节点的风光储配电网优化调度仿真——经济成本最小化与潮流计算协同优化 · 分布式电源 手册
- 西门子PLC 12001500系列模拟量滤波技术解析:应对数据扰动的一阶惯性、蠕动平均值与中位值滤波
- 三相逆变器双闭环控制MATLAB Simulink模型设计:基于外环PR与内环比例控制策略的参数整定及建模原理参考
- 网络安全社区公开知识爬取工具-先知社区安全文章与漏洞分析报告自动化抓取与本地存储-实现高效知识管理与离线搜索功能-基于Selenium与BeautifulSoup4的自动化爬虫技术.zip
- YOLOv5 v6.2实例分割在LabVIEW工业应用中的高效推理与性能分析


