JSON(JavaScript Object Notation)作为现代数据交换的核心格式,凭借其简洁性与通用性成为跨平台通信的基石。本文将深入解析其数据结构与语法规则,并提供开发者实用指南。
JSON的灵活性源于两种基础结构:对象与数组,通过嵌套组合可表达复杂数据关系。
对象由键值对构成,键为字符串,值可为任意JSON类型。语法用花括号`{}`包裹,键与值间用冒号`:`分隔,键值对间用逗号`,`分隔。
示例:
json
name": "张三",
age": 30,
isStudent": false,
address": {
city": "北京",
street": "中关村大街
关键规则:
数组为有序值集合,用方括号`[]`包裹,元素间以逗号分隔。支持混合类型与嵌套结构。
示例:
json
苹果",
42,
true,
{ "id": 1, "category": "电子产品" }
应用场景:
| 类型 | 规则说明 |
||--|
| 字符串 | 必须使用双引号,支持转义字符(如`
`换行、`
`制表符)。 |
| 数字 | 支持整数与浮点数,无需引号,禁止前导零(如避免`007`)。 |
| 布尔值 | 仅限`true`或`false`,全小写。 |
| 空值 | 使用`null`表示缺失数据。 |
错误示例:
json
user": {
profile": {
history": [
{ "date": "2023-01-01", "action": { "type": "login" } } // 嵌套过深
实用技巧:
javascript
// 格式化输出
const prettyJSON = JSON.stringify(obj, null, 2);
// 处理日期:需手动转换为字符串
const data = { date: new Date.toISOString };
示例:
python
import json
from datetime import datetime
data = { "time": datetime.now }
json_str = json.dumps(data, default=lambda o: o.isoformat if isinstance(o, datetime) else str(o))
示例:
json
total": 1000,
page": 1,
data": [/ 当前页数据 /]
| 对比维度 | JSON | XML |
|--|--|-|
| 数据体积 | 更小,无冗余标签 | 较大,标签重复占用空间 |
| 解析速度 | 快,直接映射为数据结构 | 慢,需DOM树解析 |
| 可读性 | 结构简洁,适合开发者 | 标签自,适合跨领域数据交换 |
| 扩展性 | 依赖字段设计,灵活性较低 | 通过Schema定义严格格式 |
选用建议:
通过掌握JSON的核心结构与语法细节,开发者可高效实现数据交互,规避常见陷阱。建议结合业务场景选择工具库,并持续关注性能与安全优化,以发挥JSON在现代开发中的最大价值。