揭秘 JSON,让你少掉 90% 的坑 !
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
JSON,全称 JavaScript Object Notation(JavaScript 对象表示法),是现代 Web 数据交换 的基础。它的名字听起来可能有点复杂,但相信读完本文后,你不仅会搞懂 JSON 是什么,还会明白它的重要性,以及它在各种场景中是怎么应用的。 理解 JSON什么是 JSON?正如前面所介绍的,JSON 是一种轻量级、可读性强的数据格式,主要用于数据交换。 从本质上看,JSON 是一种基于文本的格式,它由“键-值”对组成,既方便机器处理,也便于人类理解。 JSON 主要应用在:
为什么 JSON 对 Web 开发人员很重要JSON 之所以重要,关键在于它的灵活性和简单性。对于 Web 开发者来说,它具有以下几个显著优势:
现在我们对 JSON 有了基本了解,我们接下来可以深入看看 JSON 的结构长什么样,它是如何工作的。 JSON 剖析JSON 结构JSON 数据采用层级结构进行组织,主要由两种基本结构构成:对象(Object)和数组(Array)。 对象对象是 JSON 的基本单位,用 花括号 {} 括起来,里面包含多个键值对(key-value pairs)。
示例:
在这个例子中,"name"和"age"是键,而"Alice"和25是它们各自对应的值。 对象可以嵌套,也就是说,一个对象里面还可以包含另一个对象,例如:
中间的的键"contact"对应的值:
就是由两个对象组成: email 和 phone 两个键值对。 数组数组是值的有序列表,用方括号括起来[]。
这里,"fruits"是一个键,关联的值是一个字符串数组,包含 "apple"、"banana" 和 "orange" 这三个元素。 JSON 数据类型JSON 支持多种数据类型,理解它们至关重要。注意这里的类型指的是值的类型,因为键的类型只能是字符串,没有讨论的余地了。 JSON中,值可以为以下类型之一:
字符串字符串是用双引号 "" 括起来的字符序列,通常用于表示文本数据。
在这个例子中,"Alice"是一个字符串。 数字JSON 支持整数和小数(浮点数),数字不需要加引号。
这里的25 是整数,98.6 是浮点数,它们都是合法的 JSON 数值类型。 布尔值布尔值只有2个取值:true表示真,false表示假。
NullJSON 还支持特殊值 null,表示不存在的值或者占位符。
这里"middleName" 设置为 null,表示没有这个数据或者暂时缺失。 JSON 的实际应用Web 开发中的 JSON在 Web 开发中,JSON 无处不在,常用于数据传输、存储和配置。以下是几个典型的应用场景: API 响应许多 Web 服务和 API 以 JSON 格式响应数据。例如天气预报 API 可能会返回如下数据:
这个 JSON 包含了天气信息,可以用于前端页面显示天气状况。 用户数据存储和传输用户与 Web 应用交互时,他们的个人信息通常以 JSON 格式存储和传输。
这个 JSON 表示用户的基本资料。 电子商务网站在电商平台(如淘宝、京东)中,JSON 主要用于管理商品信息和购物车等数据。以下是用户购物车的 JSON 表示示例:
配置存储JSON 还常用于存储Web 应用程序的配置设置。例如,一个内容管理系统可能具有如下配置数据:
这个 JSON 定义了网站名称、主题风格和是否启用数据分析,Web 应用可以动态读取这些配置,根据 JSON 内容调整网站的展示风格。 JSON 在移动应用中的应用JSON 不仅仅用于 Web 开发,在 APP 开发中同样至关重要。APP 需要与服务器通信,获取和发送数据,而 JSON 是最常用的数据格式之一。 例如以下服务器返回给天气app的JSON数据示例:
这个 JSON 结构中:
天气app拿到JSON数据后,解析 JSON,提取数据后显示在天气页面。 JSON 在物联网(IoT)和智能设备中的应用在 物联网(IoT)和智能设备 中,JSON 也是主要的数据格式。各种智能设备(如智能家居、传感器、可穿戴设备)都需要通过 JSON 进行数据交换。 例如一个智能恒温器需要将当前温度上传到服务器:
在这个 JSON 结构中:
服务器接收这个 JSON 数据后,可以分析当前温度是否达到目标温度。 使用 JSON现在,我们已经了解了 JSON 的结构和应用场景,接下来,我们看看如何在不同的编程语言中使用 JSON,包括 解析 JSON 和 创建 JSON。 解析 JSON大多数编程语言都提供了用于解析 JSON 的内置库或模块。例如,在 JavaScript 中,可以使用JSON.parse() 方法将 JSON 字符串转换为 JavaScript 对象。
类似地,在 Python 中,可以使用json模块的 json.loads() 方法将 JSON 字符串转换为 Python 字典(dict)。
创建 JSON创建 JSON 也很简单。在 Python 中,可以使用 json.dumps() 方法,将 Python 字典 转换为 JSON 字符串。
JSON 高级概念在前面,我们了解了 JSON 的基础知识和常见应用。接下来,我们来探索 JSON 的一些高级概念,包括嵌套结构、JSON Schema 以及 JSON Web Token(JWT)等内容,理解这些高级特性在实际开发中也非常重要。 嵌套 JSONJSON 支持嵌套结构,以用于表示更复杂的数据关系。比如一本书可能有多个作者,这时就可以用如下的 嵌套 JSON 来表示:
在这个 JSON 对象中,"authors" 是一个键,对应的值是一个数组,数组中的每一项又是一个表示作者信息的对象,包含姓名和年龄。 通过这种嵌套方式,JSON 能够清晰地表达出书籍与多个作者之间的层级关系,结构直观且易于扩展。 JSON SchemaJSON Schema 是一种用来描述 JSON 数据结构和校验规则的规范。它在API 开发中尤为重要,因为它可以明确规定接口中 JSON 数据的格式和要求,从而提升数据的可靠性和一致性。 下面是一个用于描述用户信息的 JSON Schema 示例:
那么,下面的JSON 数据符合此 Schema:
而下面这个 JSON 不符合 Schema 规则,因为缺少"name"字段:
JSON Web Token(JWT)在 Web 开发中,用户登录后,服务器通常需要对其身份进行验证,并确保每次请求都是合法的。JWT(JSON Web Token)是一种广泛使用的身份验证机制,它以 JSON 格式存储和传递用户认证信息。 JWT 由三部分组成:
以下是一个 JWT 的示例:
最终生成的 JWT 是将这三部分用点号 . 拼接在一起的一个字符串(header.payload.signature),通常长这样:
JWT是怎么用的? 在用户登录成功后,服务器可以将用户信息封装进 JWT 中,返回给客户端,后续客户端请求时只需携带这个 JWT,服务器端解析 JWT 就能识别用户身份,无需反复查询数据库。这样的机制简化了认证流程,同时提高了系统的安全性和效率。 JSON 最佳实践1. 确保 JSON 格式正确在编写和使用 JSON 时,如果格式不正确,解析时就会报错,导致程序崩溃或数据丢失。因此,确保 JSON 格式有效是第一步。 如何验证JSON 格式是否正确?
在书写JSON数据时,需要注意以下几点以避免格式错误:
2. 处理 JSON 解析错误在处理 JSON 数据时,解析失败可能会导致应用崩溃,尤其是当 JSON 数据来自用户输入或外部接口时,错误的JSON数据是难以避免的。因此,实现错误处理机制至关重要。 3. 避免 JSON 注入攻击JSON 注入攻击是黑客通过恶意 JSON 数据来篡改程序逻辑或窃取信息。例如,黑客可能发送:
如果系统直接信任 JSON 数据,并据此设定权限,攻击者可能就能冒充管理员。 因此不要直接信任用户输入的 JSON,必须严格校验字段类型和内容。 4. 传输敏感数据时使用加密在网络中传输 JSON 时,敏感数据(如密码、Token)必须加密,防止被窃听: JSON 的未来随着 WebAssembly(WASM)、BSON(二进制 JSON)等技术的发展,JSON 可能会在某些高性能场景下被更高效的格式部分替代。 但由于 JSON 简单、直观,各种语言都支持,因此未来仍然会是Web 开发和数据交换领域不可或缺的一部分。随着技术的不断演进,围绕 JSON 的工具和生态也在持续完善,使开发者能够更轻松地处理和管理数据。 阅读原文:https://mp.weixin.qq.com/s/L1rajoiU6EMDQmbo-E6blw 该文章在 2025/4/30 15:01:15 编辑过 |
相关文章
正在查询... |