JSON格式如何编写:从基础到实践的全面指南
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,因其易读、易解析、跨语言兼容的特性,成为Web开发、API接口配置、数据存储等场景下的主流数据格式,本文将从JSON的基础概念出发,逐步讲解其编写规则、常见结构、实用技巧及注意事项,助你快速JSON格式的编写方法。
JSON是什么?为什么需要它?
JSON本质上是一种文本格式,用于存储和传输结构化数据,它以“键值对”(Key-Value Pair)为核心,通过特定的语法规则组织数据,既能被人类轻松阅读,也能被计算机快速解析(几乎所有编程语言都内置了JSON解析库)。
与XML、YAML等格式相比,JSON的优势在于:
- 简洁高效:语法规则简单,数据冗余度低;
- 解析友好:直接映射为编程语言中的对象、数组等数据结构(如JavaScript的
Object和Array,Python的dict和list); - 跨平台兼容:无论前端JavaScript、后端Java/Python/Go,还是移动端开发,都能轻松处理JSON数据。
JSON的基础语法规则:编写“正确”JSON的核心
JSON的语法严格,需遵循以下核心规则,否则会导致解析失败。
数据类型:JSON支持哪些数据?
JSON中数据必须为以下6种类型之一,不支持自定义类型或复杂对象(如日期、函数等,需特殊处理):
| 类型 | 描述 | 示例 |
|---|---|---|
| 字符串(String) | 由双引号包裹的文本,支持Unicode字符(如中文、emoji) | "name"、"你好"、 |
| 数字(Number) | 整数或浮点数,不支持八进制、十六进制(除非直接写十进制值),无无穷大 | 18、14、-100 |
| 布尔值(Boolean) | 只能是true或false(全小写,非True/False) |
true、false |
| 空值(Null) | 表示“空”或“无值”,只能是null(全小写) |
null |
| 数组(Array) | 有序集合,值可以是任意JSON类型,用方括号[]包裹,元素间用逗号分隔 |
[1, "a", true] |
| 对象(Object) | 无序集合,由“键值对”组成,用花括号包裹,键值对间用逗号分隔 | {"name": "Tom", "age": 18} |
结构规则:如何组织数据?
(1)对象(Object):键值对的集合
对象是JSON最核心的结构,用于表示“实体”(如用户、商品等),规则如下:
- 键(Key)必须是字符串,且必须用双引号包裹(不能用单引号或无引号);
- 值(Value)可以是任意JSON类型(字符串、数字、布尔值、空值、数组、对象);
- 键值对格式为
"键": 值,冒号前后无空格(规范建议冒号后加1空格,如"name": "Tom",非强制); - 多个键值对之间用逗号分隔,最后一个键值对后不能有逗号(否则会报错)。
示例:
{
"userId": 1001,
"username": "Alice",
"isActive": true,
"address": null,
"hobbies": ["reading", "coding", "travel"]
}
(2)数组(Array):有序值的列表
数组用于表示“列表”或“集合”,规则如下:
- 值可以是任意JSON类型(包括数组嵌套);
- 多个值之间用逗号分隔,最后一个值后不能有逗号;
- 数组可以嵌套(如二维数组、数组中的对象)。
示例:
[
{"id": 1, "name": "商品A", "price": 99.9},
{"id": 2, "name": "商品B", "price": 149.0},
[]
]
特殊字符与转义:避免语法错误
JSON中部分字符有特殊含义,若需在字符串中表示这些字符,必须用反斜杠\转义:
| 特殊字符 | 转义写法 | 说明 |
|---|---|---|
| 双引号 | \" |
字符串中包含双引号时使用 |
| 反斜杠 | \\ |
字符串中包含反斜杠时使用 |
| 换行符 | \n |
表示换行 |
| 制表符 | \t |
表示缩进 |
| 回车符 | \r |
表示回车 |
| 控制字符 | \uXXXX |
Unicode字符(如\u4e2d表示“中”) |
示例:
{
"message": "他说:\"Hello, JSON!\"\n这是第二行。"
}
JSON的常见应用场景与编写示例
API接口数据交换
后端向前端返回用户信息时,常用JSON格式封装数据:
{
"code": 200,
"message": "success",
"data": {
"user": {
"id": 1001,
"nickname": "开发者",
"email": "dev@example.com",
"permissions": ["read", "write"]
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
配置文件
许多工具(如Webpack、VS Code)使用JSON作为配置文件,定义程序运行参数:
{
"name": "my-project",
"version": "1.0.0",
"scripts": {
"dev": "vite",
"build": "vite build"
},
"dependencies": {
"vue": "^3.3.0",
"axios": "^1.5.0"
}
}
数据存储(如日志、缓存)
用JSON记录操作日志,便于后续分析:
[
{
"timestamp": "2023-10-01T12:00:00Z",
"level": "info",
"message": "用户登录成功",
"userId": 1001
},
{
"timestamp": "2023-10-01T12:01:30Z",
"level": "error",
"message": "订单创建失败",
"error": "库存不足"
}
]
编写JSON的实用技巧与工具
保持格式规范:缩进与换行
虽然JSON语法不强制要求缩进和换行,但“可读性”对开发者至关重要,推荐:
- 使用2个空格或1个Tab缩进(避免混用);
- 对象和数组换行展开,避免单行写满数据(复杂JSON可读性差)。
对比示例:
// 不推荐(单行,难以阅读)
{"name":"Bob","age":25,"hobbies":["music","sports"]}
// 推荐(换行+缩进,清晰易读)
{
"name": "Bob",
"age": 25,
"hobbies": [
"music",
"sports"
]
}
使用工具验证JSON正确性
JSON语法严格,一个逗号、引号错误都可能导致解析失败,推荐工具:
- 在线JSON验证工具:如JSONLint(https://jsonlint.com/),粘贴JSON即可检查语法;
- 代码编辑器插件:VS Code的“JSON”插件(内置语法高亮和错误提示);
- 命令行工具:如
python -m json.tool(Python自带,可格式化JSON)。
避免常见错误
- 键未用双引号:如
{name: "Tom"}(错误,应为{"name": "Tom"}); - 字符串用单引号:如
{'name': 'Tom'}(错误,应为{"name": "Tom"}); - 多尾随逗号:如
{"a": 1, "b": 2,}(错误,最后一个键值对后无逗号); - **注释



还没有评论,来说两句吧...