JSON文件怎么写数据:从基础到实践的全面指南
JSON文件是什么?为什么用它写数据?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以易读、易写的文本形式存储和传输结构化数据,它基于JavaScript对象语法,但已成为独立于语言的通用标准,广泛应用于Web开发、API接口、配置文件等场景。
与XML相比,JSON更简洁(无冗余标签),与CSV相比,JSON支持复杂数据结构(如嵌套对象、数组),因此成为“写数据”的理想选择——无论是存储用户信息、配置参数,还是导出日志数据,JSON都能清晰、灵活地表达数据关系。
JSON文件的基本语法规则:写数据前必须的“语法书”
要正确写入JSON数据,需严格遵循其语法规范,否则会导致文件无法被程序解析,核心规则如下:
数据类型:JSON支持哪些数据?
JSON中的数据必须是以下基本类型或它们的组合:
- 字符串(String):用双引号包裹,如
"name"、"北京"。
✖️ 错误示例:单引号'name'、无引号name。 - 数字(Number):整数或浮点数,如
25、14,无需引号。 - 布尔值(Boolean):仅
true或false(全小写),无需引号。 - 空值(Null):表示空值,用
null(全小写),无需引号。 - 数组(Array):有序集合,用方括号
[]包裹,元素间用逗号分隔,如["苹果", "香蕉", "橙子"]。 - 对象(Object):无序键值对集合,用花括号包裹,键值对用冒号分隔,多组键值对用逗号分隔,如
{"name": "张三", "age": 30}。
结构规范:嵌套与分隔的“铁律”
- 键名必须是字符串:对象的键必须用双引号包裹,如
{"age": 30}正确,{age: 30}错误。 - 元素间必须有逗号分隔:数组或对象中的最后一个元素后不能加逗号,否则会报错。
✖️ 错误示例:["苹果", "香蕉", "橙子",]、{"name": "李四", "age": 20,}。 - 嵌套结构自由组合:数组中可嵌套对象,对象中也可嵌套数组,如
[{"name": "王五", "hobbies": ["读书", "游泳"]}, {"name": "赵六", "hobbies": ["游戏", "编程"]}]。
如何实际写入JSON数据?从手动创建到代码生成
手动写入:用文本编辑器创建简单JSON文件
适合少量数据或临时配置,操作步骤如下:
(1)新建一个文本文件(如data.json),后缀名必须是.json(确保文件关联到文本编辑器,而非其他程序)。
(2)用文本编辑器(如VS Code、Sublime Text、Windows记事本)打开文件,按JSON语法规则写入数据。
示例:写入一个用户信息对象
{
"userId": 1001,
"username": "小明",
"email": "xiaoming@example.com",
"isActive": true,
"lastLoginTime": "2023-10-15T14:30:00Z",
"tags": ["前端开发", "JavaScript", "Vue.js"],
"profile": {
"age": 25,
"city": "上海",
"occupation": "软件工程师"
}
}
保存后,文件即成为一个合法的JSON文件,可通过浏览器或工具(如JSONLint)验证格式是否正确。
代码生成:用程序动态写入JSON数据(Python/JavaScript示例)
实际开发中,数据通常来自数据库、用户输入或程序处理结果,需通过代码动态生成JSON文件,以下是常见语言的实现方法:
(1)Python:使用json模块写入文件
Python内置json模块,可轻松将Python对象转换为JSON格式并写入文件。
示例:将Python字典写入users.json
import json
# 准备Python数据(字典/列表)
users_data = {
"users": [
{
"id": 1,
"name": "Alice",
"age": 28,
"hobbies": ["hiking", "coding"]
},
{
"id": 2,
"name": "Bob",
"age": 32,
"hobbies": ["reading", "gaming"]
}
],
"total": 2
}
# 写入JSON文件(ensure_ascii=False支持中文,indent=4格式化缩进)
with open("users.json", "w", encoding="utf-8") as f:
json.dump(users_data, f, ensure_ascii=False, indent=4)
print("JSON文件写入成功!")
执行后生成的users.json:
{
"users": [
{
"id": 1,
"name": "Alice",
"age": 28,
"hobbies": [
"hiking",
"coding"
]
},
{
"id": 2,
"name": "Bob",
"age": 32,
"hobbies": [
"reading",
"gaming"
]
}
],
"total": 2
}
关键参数:
ensure_ascii=False:确保非ASCII字符(如中文)原样输出,而非转义为\u格式。indent=4:指定缩进空格数,使文件格式化(可读性增强,非必需)。
(2)JavaScript:Node.js环境写入JSON文件
在Node.js中,可通过fs(文件系统)模块和JSON.stringify()方法写入JSON文件。
示例:将用户数据写入products.json
const fs = require('fs');
// 准备JavaScript数据(对象/数组)
const productsData = {
"category": "电子产品",
"products": [
{
"id": "P001",
"name": "iPhone 15",
"price": 5999,
"inStock": true
},
{
"id": "P002",
"name": "MacBook Pro",
"price": 12999,
"inStock": false
}
],
"updateTime": "2023-10-15T16:00:00Z"
};
// 将对象转换为JSON字符串(JSON.stringify的第二个参数用于格式化)
const jsonString = JSON.stringify(productsData, null, 2);
// 写入文件(同步写入,简单场景可用;异步写入推荐fs.promises.writeFile)
fs.writeFileSync('products.json', jsonString, 'utf-8');
console.log('JSON文件写入成功!');
执行后生成的products.json:
{
"category": "电子产品",
"products": [
{
"id": "P001",
"name": "iPhone 15",
"price": 5999,
"inStock": true
},
{
"id": "P002",
"name": "MacBook Pro",
"price": 12999,
"inStock": false
}
],
"updateTime": "2023-10-15T16:00:00Z"
}
工具辅助:用在线工具或编辑器快速生成JSON
若不想手动或代码编写,可借助在线工具:
- JSON Generator(https://json-generator.com/):通过模板快速生成测试JSON数据。
- VS Code插件:如“JSON Tools”,支持格式化、验证、快速生成JSON结构。
常见错误与避坑指南:写JSON数据时别踩这些雷
语法错误:最常见也最致命的问题
- 引号混用:键名或字符串值必须用双引号,单引号会导致解析失败。
- 尾随逗号:数组或对象最后一个元素后加逗号(如
{"a": 1,}),多数JSON解析器会报错。 - 缺少引号或冒号:如
{name: "张三"}(键名缺引号)、{"name": "张三" "age": 25}(键值对缺冒号)。
解决方案:写入后用工具验证(如浏览器控制台输入JSON.parse(文件内容),或使用JSONLint在线验证)。



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