目录
一、JSON 是什么
JSON,全称为 JavaScript Object Notation,也就是 JavaScript 对象表示法 ,是一种轻量级的数据交换格式。它诞生于 20 世纪 90 年代末,由 Douglas Crockford 提出。别看它和 JavaScript 关系紧密,但 JSON 可是独立于编程语言的文本格式,这意味着几乎所有的现代编程语言都能对它进行解析和生成,兼容性拉满。
JSON 的语法简洁明了,主要由两种结构组成:对象和数组。对象是由花括号{}包围的键值对集合,每个键值对之间用逗号,分隔,键必须是字符串,值可以是字符串、数字、布尔值、null、对象或者数组。比如:
{
"name": "张三",
"age": 30,
"isStudent": false,
"hobbies": ["阅读", "跑步", "旅行"],
"address": {
"city": "北京",
"street": "朝阳区"
}
}
在这个例子里,name、age、isStudent、hobbies和address都是键,对应的值分别展示了不同的数据类型,其中address的值又是一个嵌套的对象。
数组则是由方括号[]包围的有序值列表,值之间同样用逗号,分隔,这些值也可以是各种数据类型。像这样:
["苹果", "香蕉", "橙子"]
当然,数组里也能包含对象,形成更复杂的数据结构:
[
{
"name": "张三",
"age": 30
},
{
"name": "李四",
"age": 25
}
]
凭借着自身的优势,JSON 在诸多领域都得到了广泛应用。在 Web 开发里,它是前后端数据交换的 “主力军”。当你在浏览器中访问一个网站,前端页面通过 AJAX 请求从服务器获取数据,服务器返回的数据大概率就是 JSON 格式。比如你在电商网站查看商品列表,服务器返回的商品信息就会以 JSON 格式传输过来,前端拿到数据后就能轻松解析并展示在页面上。
在配置文件方面,JSON 也表现出色。许多应用程序都使用 JSON 格式的配置文件来存储各种配置信息,像服务器的地址、端口号、数据库连接信息等。它的易读性和易解析性让开发者能够快速理解和修改配置内容。
另外,在 NoSQL 数据库中,比如 MongoDB,就采用了类似 JSON 的 BSON(Binary JSON)格式来存储数据,充分利用了 JSON 灵活的数据结构,方便存储和查询半结构化数据。
二、JSON 语法基础
了解了 JSON 的基本概念后,接下来咱们深入学习一下 JSON 的语法基础,这可是掌握 JSON 的关键。
(一)数据类型
JSON 支持 6 种数据类型,每种类型都有其独特的表示方式和用途:
- 字符串(String):由双引号包裹的一系列 Unicode 字符。比如 "Hello, JSON!",注意这里必须是双引号,单引号在 JSON 中是不被允许的 。像'Hello'这样用单引号包裹就会导致语法错误。
- 数字(Number):可以是整数,如100;也可以是浮点数,比如3.14。不过要注意,JSON 中不支持八进制(如010)和十六进制(如0xFF)表示法,并且不能出现前导零(除了0本身),像012这种写法就是错误的。
- 布尔值(Boolean):只有两个值,true和false,用于表示逻辑判断结果。例如{"isDone": true} 。
- null:表示空值,用于表示某个值的缺失。比如{"message": null} 。
- 数组(Array):用方括号[]包围,里面的值可以是任意 JSON 数据类型,且值之间用逗号分隔。例如["苹果", "香蕉", "橙子"] ,或者[1, true, "test", null] 。数组还能嵌套,像[[1, 2], [3, 4]] 。
- 对象(Object):由花括号{}包围的键值对集合,键必须是字符串,用双引号包裹,键值对之间用冒号:分隔,多个键值对之间用逗号分隔。例如{"name": "张三", "age": 30} ,对象也可以嵌套,比如{"person": {"name": "李四", "age": 25}} 。
(二)语法规则
JSON 的基本语法规则围绕着上述数据类型展开,主要包含以下几点:
- 键值对:在对象中,键值对是基本组成部分。键作为数据的标识,必须是字符串且用双引号包裹;值则可以是任意 JSON 数据类型。例如{"city": "北京"} ,这里"city"是键,"北京"是值。
- 数组表示:数组中的值按照顺序排列,可通过索引访问,索引从 0 开始。比如["a", "b", "c"][1]会返回"b" 。
- 对象表示:对象内的键必须唯一,若出现重复键,后面的键值对会覆盖前面的。比如{"name": "张三", "name": "李四"} ,最终"name"的值是"李四" 。
- 特殊字符转义:在字符串中,如果需要使用特殊字符,如双引号"、反斜杠\、换行符\n等,要进行转义。例如{"message": "He said, \"Hello!\""} ,这里双引号被转义,才能正常表示在字符串中。
需要注意的是,JSON 语法非常严格,任何小的语法错误,比如缺少逗号、引号不匹配等,都会导致解析失败。同时,由于 JSON 源自 JavaScript,它的语法和 JavaScript 对象字面量很相似,但也有区别,比如 JSON 的键必须是字符串且用双引号包裹 ,而 JavaScript 对象的键可以不用引号包裹(如果是合法标识符)。掌握这些语法基础,是我们正确使用 JSON 的第一步。
三、JSON 在不同编程语言中的使用
了解了 JSON 的语法基础后,我们来看看在实际编程中,如何在不同编程语言里玩转 JSON。JSON 凭借其跨语言的特性,在各种编程语言中都有广泛的应用,接下来咱们就以 JavaScript 和 Python 这两种常用语言为例,深入探讨一下。
(一)JavaScript
在 JavaScript 中,JSON 是一等公民,因为 JSON 最初就是从 JavaScript 对象字面量演变而来的,所以 JavaScript 对 JSON 的支持非常原生且强大。
在 JavaScript 中,主要使用JSON.