从数据到JSON:一份实用制作指南
在Web开发、数据交换或配置文件管理中,JSON(JavaScript Object Notation)以其轻量级、易读易写的特性,成为最常用的数据交换格式之一,“数据怎么制作JSON”,是每个开发者和数据处理者的必备技能,本文将从JSON的核心特点出发,详细拆解数据制作JSON的完整流程,涵盖不同数据类型的转换、常见工具的使用,以及注意事项,助你轻松上手。
先搞懂:JSON到底是什么?
在制作JSON之前,我们需要明确它的“规则”,JSON是一种基于文本的数据格式,其核心结构有两种:
-
对象(Object):用 包裹,由“键值对”(Key-Value Pair)组成,键(Key)必须是字符串(需用双引号 包裹),值(Value)可以是多种数据类型,多个键值对之间用逗号 分隔。
示例:{"name": "张三", "age": 30} -
数组(Array):用
[]包裹,由多个值(Value)组成,值之间用逗号 分隔,值可以是任意JSON支持的数据类型。
示例:["苹果", "香蕉", "橙子"]
JSON支持的数据类型包括:
- 基本类型:字符串(
"text")、数字(123、14)、布尔值(true/false)、null - 复合类型:对象()、数组(
[])
数据制作JSON的完整流程
无论是从数据库、Excel表格,还是编程语言中的数据结构制作JSON,核心逻辑都是:将原始数据按照JSON的语法规则,转换为键值对或数组的组合形式,以下是具体步骤:
步骤1:明确数据结构与关系
制作JSON前,先理清原始数据的“层次关系”。
- 如果数据是“一个人的信息”,可能包含姓名(字符串)、年龄(数字)、爱好(数组)、地址(对象,包含城市、街道等),这种嵌套关系需要提前设计。
- 如果数据是“商品列表”,则适合用数组存储多个商品对象,每个商品对象包含id、名称、价格等键值对。
示例: 原始数据为“学生信息”,包含学生姓名、学号、选课列表(课程名、学分),其JSON结构可设计为:
{
"studentName": "李四",
"studentId": "2023001",
"courses": [
{"courseName": "高等数学", "credit": 4},
{"courseName": "英语", "credit": 3}
]
}
步骤2:将数据转换为键值对(对象)或数组
根据数据关系,选择“对象”或“数组”作为顶层结构:
- 单条数据(如一个用户、一个商品):用对象()作为顶层,键为字段名,值为对应数据。
- 多条同类数据(如用户列表、商品列表):用数组(
[])作为顶层,每个元素是一个对象。
示例转换:
原始数据(Excel表格形式):
| 姓名 | 年龄 | 城市 |
|------|------|--------|
| 王五 | 25 | 北京 |
| 赵六 | 28 | 上海 |
转换为JSON对象(单条):{"name": "王五", "age": 25, "city": "北京"}
转换为JSON数组(多条):
[
{"name": "王五", "age": 25, "city": "北京"},
{"name": "赵六", "age": 28, "city": "上海"}
]
步骤3:处理特殊数据类型与嵌套
- 字符串:必须用双引号 包裹(单引号 是非法的),
"gender": "男"。 - 数字:直接写,无需引号,
"score": 95(注意:数字不能以0开头,除非是小数,如"price": 0.99)。 - 布尔值与null:直接写
true、false或null(区分大小写,不可写作"true"或NULL)。 - 嵌套结构:如果值本身是复杂数据(如列表、字典),直接用对象或数组嵌套,例如上述“学生信息”中的
courses字段。
常见错误:
- 键未加双引号:
{name: "张三"}(错误,应为{"name": "张三"}) - 字符串用单引号:
{'age': 30}(错误,应为{"age": 30}) - 末尾多余逗号:
{"name": "张三", "age": 30,}(错误,JSON不允许最后一个键值对或数组元素后有多余逗号)
步骤4:验证JSON格式
制作完成后,务必验证JSON是否符合语法规范,可通过以下方式:
- 在线工具:使用JSONLint(https://jsonlint.com/)等在线校验器,粘贴JSON代码即可检查格式错误。
- 代码校验:在编程语言中,尝试用JSON解析库(如Python的
json模块、JavaScript的JSON.parse())解析,若报错则说明格式有问题。
不同场景下的JSON制作方法
场景1:从编程语言数据结构生成JSON
主流编程语言都提供了将原生数据结构转为JSON的方法:
-
Python:使用
json模块的dumps()方法(转为字符串)或dump()(写入文件)。
示例:import json data = {"name": "张三", "hobbies": ["reading", "coding"]} json_str = json.dumps(data, ensure_ascii=False) # ensure_ascii=False支持中文 print(json_str) # 输出:{"name": "张三", "hobbies": ["reading", "coding"]} -
JavaScript:使用
JSON.stringify()方法(对象/数组转JSON字符串)。
示例:const data = {name: "李四", age: 25}; const jsonStr = JSON.stringify(data); console.log(jsonStr); // 输出:{"name":"李四","age":25} -
Java:使用第三方库(如Gson、Jackson)或
org.json库。
示例(Gson):import com.google.gson.Gson; public class Main { public static void main(String[] args) { Gson gson = new Gson(); String json = gson.toJson("name", "王五"); System.out.println(json); // 输出:{"name":"王五"} } }
场景2:从数据库数据生成JSON
如果数据存储在MySQL、PostgreSQL等数据库中,可通过SQL查询直接生成JSON(多数现代数据库支持JSON函数):
-
MySQL 5.7+:使用
JSON_OBJECT()(创建对象)、JSON_ARRAY()(创建数组)或JSON_ARRAYAGG()(聚合为数组)。
示例: 查询学生列表并转为JSON数组:SELECT JSON_ARRAYAGG( JSON_OBJECT( 'name', student_name, 'age', age, 'city', city ) ) AS student_list FROM students; -
PostgreSQL:使用
row_to_json()(将行转为JSON)或json_build_object()。
示例:SELECT json_build_object('name', student_name, 'age', age) FROM students LIMIT 1;
场景3:从Excel/CSV表格生成JSON
对于表格类数据,可借助工具快速转换:
- 手动转换:适合少量数据,按“步骤2”的规则逐行构建。
- 在线工具:使用“Excel转JSON”在线工具(如ConvertCSV、ExcelToJSON),上传文件即可自动生成。
- 脚本处理:用Python的
pandas库读取Excel/CSV,再转为JSON。
示例(Python):import pandas as pd df = pd.read_excel("students.xlsx") # 读取Excel json_data = df.to_json(orient="records", force_ascii=False) # 转为JSON数组 print(json_data)
制作JSON的常见注意事项
- 编码规范:
键名尽量使用英文(避免中文乱码问题,若需中文确保文件编码为UTF-8),且命名清晰(如



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