怎么弄自己的JSON:从零开始创建与使用JSON
JSON是什么?为什么需要自己的JSON?
在开始“弄自己的JSON”之前,先搞清楚两个基础问题:JSON是什么?为什么需要自己创建JSON?
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,以“键值对”(Key-Value Pair)为核心结构,易于人阅读和编写,也方便机器解析和生成,它就像数据的“通用语言”——无论是前端网页、后端服务器,还是手机App,都能通过JSON传递数据(比如用户信息、配置文件、接口响应等)。
为什么需要“自己的JSON”?因为你的项目、应用或流程中,可能有自定义数据需要存储或传输,你想记录自己的每日饮食数据、设计一个个人简历的JSON格式、给小工具写配置参数,或者开发API时定义请求/响应的数据结构——这些都需要你亲手创建符合需求的JSON。
创建自己的JSON:从结构到语法
JSON的核心是“结构化数据”,它的语法规则是第一步,下面用一个“个人读书笔记”的例子,拆解JSON的创建方法。
明确你的数据需求
先问自己:我要记录哪些信息? 比如读书笔记可能需要:书名、作者、阅读日期、评分、核心摘要、标签,这些就是JSON的“字段”。
JSON的基本语法规则
JSON的结构有两种:对象(Object)和数组(Array)。
- 对象:用 包裹,表示“一个整体的数据单元”,一本书的笔记”,内部是“键值对”,格式为
"键": 值,键必须是字符串(双引号包裹),值可以是多种类型(见下)。 - 数组:用
[]包裹,表示“多个数据的有序集合”,多本书的笔记”,数组内可以放对象、字符串、数字等。
值的类型(JSON支持6种基本数据类型):
- 字符串(,如
"《三体》") - 数字(如
0,不用写引号) - 布尔值(
true/false,全小写,不用引号) - null(表示“空值”,如
null) - 对象()
- 数组(
[...])
动手写第一个JSON:个人读书笔记
根据上面的需求,我们创建一个“单本书的笔记”对象:
{
"bookTitle": "《三体》",
"author": "刘慈欣",
"readDate": "2023-10-15",
"rating": 9.5,
"summary": "地球文明与三体文明的宇宙史诗,涵盖黑暗森林法则、降维打击等核心概念。",
"tags": ["科幻", "硬科幻", "宇宙社会学"],
"isFavorite": true,
"notes": null
}
拆解这个JSON:
bookTitle、author等是“键”,后面跟着对应的“值”;"tags"的值是数组([]),因为标签有多个;"isFavorite"的值是布尔值(true);"notes"暂时没有内容,用null表示。
如果有多本书的笔记,可以用数组包裹多个对象:
[
{
"bookTitle": "《三体》",
"author": "刘慈欣",
"readDate": "2023-10-15",
"rating": 9.5,
"summary": "地球文明与三体文明的宇宙史诗...",
"tags": ["科幻", "硬科幻"],
"isFavorite": true,
"notes": null
},
{
"bookTitle": "《活着》",
"author": "余华",
"readDate": "2023-09-20",
"rating": 8.0,
"summary": "福贵一生的苦难与坚韧,展现生命的意义...",
"tags": ["现代文学", "人生"],
"isFavorite": false,
"notes": "建议结合历史背景阅读"
}
]
创建JSON时的常见错误(避坑!)
- 键没有用双引号:
bookTitle: "《三体》"(错误,正确是"bookTitle": "《三体》"); - 字符串值没用双引号:
author: 刘慈欣(错误,正确是"author": "刘慈欣"); - 末尾有逗号:比如最后一个键值对后加逗号,
"isFavorite": true,(错误,JSON不允许末尾逗号); - 使用注释:原生JSON不支持注释(如
// 这是书名),如果需要注释,只能通过工具或预处理实现; - 数据类型混用:
"rating": "9.5"(错误,评分是数字,不应加引号;除非你明确需要按字符串处理)。
如何“使用”自己的JSON?
创建JSON不是目的,目的是用起来——可能是存到文件里、传给其他程序,或者在代码中解析,下面介绍3种常见场景。
场景1:把JSON存成文件(本地存储)
如果你想把数据长期保存(比如配置文件、日志),可以把JSON写成 .json 文件。
操作步骤:
- 用文本编辑器(如VS Code、Sublime Text,甚至记事本)新建一个文件;
- 把JSON内容复制进去(注意格式要正确,可以用“格式化工具”检查);
- 保存时,文件名后缀必须是
.json,my_books.json。
保存后,你可以用任何编程语言读取这个文件(比如Python的 json 库、JavaScript的 fetch API),或者直接用文本编辑器修改。
场景2:在代码中生成/解析JSON(编程实现)
几乎所有编程语言都支持JSON处理,这里以最常用的 Python 和 JavaScript 为例。
▶ Python:生成和解析JSON
Python内置 json 库,无需安装。
① 生成JSON(把Python对象转成JSON字符串):
import json
# 定义Python字典(类似JSON对象)
book_data = {
"bookTitle": "《三体》",
"author": "刘慈欣",
"rating": 9.5,
"tags": ["科幻", "硬科幻"]
}
# 用json.dumps()转成JSON字符串(ensure_ascii=False避免中文乱码)
json_str = json.dumps(book_data, ensure_ascii=False, indent=2) # indent=2格式化,缩进2空格
print(json_str)
输出:
{
"bookTitle": "《三体》",
"author": "刘慈欣",
"rating": 9.5,
"tags": ["科幻", "硬科幻"]
}
② 解析JSON(把JSON字符串转成Python对象):
import json
# 假设这是从文件或接口获取的JSON字符串
json_str = '{"bookTitle": "《三体》", "author": "刘慈欣", "rating": 9.5}'
# 用json.loads()转成Python字典
book_dict = json.loads(json_str)
print(book_dict["author"]) # 输出:刘慈欣
▶ JavaScript(浏览器/Node.js):生成和解析JSON
JavaScript原生支持JSON,无需额外库。
① 生成JSON(把对象转成JSON字符串):
// 定义JavaScript对象
const bookData = {
bookTitle: "《三体》",
author: "刘慈欣",
rating: 9.5,
tags: ["科幻", "硬科幻"]
};
// 用JSON.stringify()转成JSON字符串(null, 2是格式化参数)
const jsonStr = JSON.stringify(bookData, null, 2);
console.log(jsonStr);
输出和Python示例一致。
② 解析JSON(把JSON字符串转成对象):
// 假设这是从API获取的JSON字符串
const jsonStr = '{"bookTitle": "《三体》", "author": "刘慈欣", "rating": 9.5}';
// 用JSON.parse()转成JavaScript对象
const bookObj = JSON.parse(jsonStr);
console.log(bookObj.author); // 输出:刘慈欣
场景3:在线工具辅助(快速验证/格式化)
如果手写JSON怕出错,可以用在线工具:
- 格式化/验证:JSON Formatter(粘贴JSON后会自动格式化,错误会标红);
- 在线编辑:



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