JSON 文件详解:您需要知道的一切
关于 JSON 文件的综合指南 - 了解 .json 扩展名、MIME 类型、结构,以及如何有效地创建、打开和使用 JSON 文件。
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# JSON 文件详解:您需要知道的一切
JSON 文件在现代软件开发中无处不在。从配置文件到数据存储,了解 JSON 文件对于开发人员、数据分析师以及任何处理数字数据的人来说都至关重要。本综合指南涵盖了您需要了解的关于 JSON 文件的所有内容。
什么是 JSON 文件?
JSON 文件是一个文本文件,包含以 JavaScript Object Notation 格式结构化的数据。这些文件使用 .json 扩展名,并以人类可读的结构化格式存储数据,计算机可以轻松解析和生成。
文件扩展名
JSON 文件使用 .json 扩展名:
config.jsonpackage.jsondata.jsonsettings.json
MIME 类型和内容类型
通过 HTTP 提供 JSON 文件时,正确的 MIME 类型是:
Content-Type: application/json
这告诉浏览器和应用程序如何解释文件内容。
JSON 文件的结构
基本结构
JSON 文件必须包含单个顶级值,通常是对象或数组:
对象作为根:{
"name": "示例",
"version": "1.0.0"
}
数组作为根:
[
{"id": 1, "name": "项目 1"},
{"id": 2, "name": "项目 2"}
]
字符编码
JSON 文件应以 UTF-8 编码,不带 BOM(字节顺序标记)。这确保:
- 通用兼容性
- 正确处理国际字符
- 更小的文件大小
空白字符
虽然解析器会忽略空白字符(空格、制表符、换行符),但正确的格式可以提高可读性:
压缩(生产环境):{"name":"应用","version":"1.0","active":true}
格式化(开发环境):
{
"name": "应用",
"version": "1.0",
"active": true
}
常见的 JSON 文件类型
1. 配置文件
应用程序使用 JSON 进行配置:
config.json:{
"server": {
"port": 3000,
"host": "localhost"
},
"database": {
"url": "mongodb://localhost:27017",
"name": "myapp"
},
"logging": {
"level": "info",
"file": "app.log"
}
}
2. 包清单
包管理器使用 JSON 定义依赖项:
package.json(Node.js):{
"name": "my-application",
"version": "2.1.0",
"description": "我的超棒应用",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.0",
"mongoose": "^7.0.0"
},
"devDependencies": {
"jest": "^29.0.0"
}
}
3. 数据存储文件
JSON 文件可以存储应用程序数据:
users.json:{
"users": [
{
"id": "usr_001",
"username": "alice",
"email": "alice@example.com",
"role": "admin",
"createdAt": "2026-01-01T00:00:00Z"
},
{
"id": "usr_002",
"username": "bob",
"email": "bob@example.com",
"role": "user",
"createdAt": "2026-01-05T10:30:00Z"
}
]
}
4. 翻译文件
国际化(i18n)通常使用 JSON:
zh.json:{
"welcome": "欢迎",
"login": "登录",
"logout": "登出",
"errors": {
"required": "此字段为必填项",
"invalid_email": "请输入有效的电子邮件"
}
}
5. API 响应文件
用于测试的模拟数据:
api-response.json:{
"status": "success",
"data": {
"products": [
{
"id": "prod_123",
"name": "笔记本电脑",
"price": 999.99,
"inStock": true
}
]
},
"metadata": {
"page": 1,
"perPage": 20,
"total": 156
}
}
如何创建 JSON 文件
方法 1:文本编辑器
使用任何文本编辑器创建 JSON 文件:
.json 扩展名保存文件{
"title": "我的第一个 JSON 文件",
"created": "2026-01-15",
"items": [1, 2, 3]
}
方法 2:编程方式
大多数编程语言都可以创建 JSON 文件:
Python:import json
data = {
"name": "张三",
"age": 30,
"city": "北京"
}
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
JavaScript/Node.js:
const fs = require('fs');
const data = {
name: "张三",
age: 30,
city: "北京"
};
fs.writeFileSync('data.json', JSON.stringify(data, null, 2));
如何打开和读取 JSON 文件
在文本编辑器中打开
任何文本编辑器都可以打开 JSON 文件:
- 记事本:Windows 内置
- VS Code:带语法高亮和验证
- Sublime Text:快速且功能丰富
- Notepad++:免费且强大
在浏览器中查看
现代浏览器可以显示格式化的 JSON:
在线 JSON 查看器
专门的工具提供高级功能:
- 语法高亮
- 可折叠树视图
- 验证和错误检测
- 格式化选项
编程方式读取
Python:import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data['name'])
JavaScript:
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
console.log(data.name);
JSON 文件最佳实践
1. 使用有意义的文件名
选择描述性名称:
- ✅
user-settings.json - ✅
database-config.json - ❌
file1.json - ❌
temp.json
2. 维护一致的结构
为同一类型的文件保持一致的结构:
{
"metadata": {},
"data": {},
"config": {}
}
3. 使用版本控制
在 JSON 文件中包含版本信息:
{
"version": "2.1.0",
"schemaVersion": "1.0",
"data": {}
}
4. 验证 JSON 语法
在部署前始终验证 JSON 文件:
- 使用在线验证器
- 使用 IDE 的内置验证
- 编写自动化测试
5. 适当格式化
开发环境:- 使用缩进(2 或 4 个空格)
- 添加换行符以提高可读性
- 压缩 JSON 以减小文件大小
- 删除不必要的空白字符
6. 记录模式
对于复杂的 JSON 文件,创建模式文档:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "number"}
},
"required": ["name"]
}
常见的 JSON 文件错误
1. 缺少逗号
❌ 错误:
{
"name": "张三"
"age": 30
}
✅ 正确:
{
"name": "张三",
"age": 30
}
2. 尾随逗号
❌ 错误:
{
"name": "张三",
"age": 30,
}
✅ 正确:
{
"name": "张三",
"age": 30
}
3. 单引号
❌ 错误:
{
'name': 'Zhang San'
}
✅ 正确:
{
"name": "Zhang San"
}
4. 未加引号的键
❌ 错误:
{
name: "Zhang San"
}
✅ 正确:
{
"name": "Zhang San"
}
JSON 文件安全性
1. 验证输入
解析 JSON 文件时始终验证内容:
import json
try:
with open('data.json', 'r') as f:
data = json.load(f)
# 验证数据结构
assert 'name' in data
assert isinstance(data['age'], int)
except (json.JSONDecodeError, AssertionError) as e:
print(f"无效的 JSON 文件:{e}")
2. 避免敏感数据
不要在 JSON 文件中存储敏感信息:
- ❌ 密码
- ❌ API 密钥
- ❌ 个人身份信息
- ✅ 使用环境变量或安全保管库
3. 文件权限
为 JSON 文件设置适当的文件权限:
# Linux/Mac
chmod 600 config.json # 仅所有者可读写
JSON 文件工具
编辑器和 IDE
- VS Code:出色的 JSON 支持和扩展
- JetBrains IDE:内置 JSON 编辑器
- Sublime Text:快速且可自定义
在线工具
- JSON Formatter:格式化和验证
- JSON Editor Online:可视化编辑
- JSON Diff:比较 JSON 文件
命令行工具
- jq:JSON 处理器
- fx:交互式 JSON 查看器
- json-server:用于原型设计的模拟 REST API
JSON 文件与其他格式的比较
JSON vs YAML
| 特性 | JSON | YAML |
|------|------|------|
| 可读性 | 良好 | 极好 |
| 注释 | 不支持 | 支持 |
| 数据类型 | 有限 | 丰富 |
| 解析速度 | 更快 | 较慢 |
| 用例 | API、数据 | 配置 |
JSON vs XML
| 特性 | JSON | XML |
|------|------|------|
| 冗长程度 | 简洁 | 冗长 |
| 可读性 | 更好 | 一般 |
| 数据类型 | 原生 | 基于字符串 |
| 解析 | 更快 | 较慢 |
| 元数据 | 有限 | 丰富 |
JSON vs CSV
| 特性 | JSON | CSV |
|------|------|------|
| 结构 | 层次化 | 表格化 |
| 嵌套 | 支持 | 不支持 |
| 数据类型 | 保留 | 全部为字符串 |
| 大小 | 较大 | 较小 |
| 用例 | API | 数据导出 |
现实世界的 JSON 文件示例
VS Code 设置
{
"editor.fontSize": 14,
"editor.tabSize": 2,
"files.autoSave": "afterDelay",
"workbench.colorTheme": "Dark+",
"extensions.ignoreRecommendations": false
}
ESLint 配置
{
"env": {
"browser": true,
"es2021": true
},
"extends": "eslint:recommended",
"rules": {
"semi": ["error", "always"],
"quotes": ["error", "double"]
}
}
tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/*/"],
"exclude": ["node_modules"]
}
结论
JSON 文件是现代软件开发中的基本构建块。它们的简洁性、灵活性和广泛支持使其成为配置、数据存储和系统间通信的理想选择。
通过遵循本指南中概述的最佳实践,您可以有效地创建、管理和使用 JSON 文件。无论您是在配置应用程序、存储数据还是在服务之间交换信息,了解 JSON 文件都是一项宝贵的技能。
记住始终验证您的 JSON,保持一致的格式,并为长期维护记录您的文件结构。随着经验的积累,使用 JSON 文件将成为您开发工作流程中的第二天性。