JSON 生成器
免费在线 JSON 生成器,无需写模板即可一键生成随机 Mock 数据。内置 13 种常用字段类型与示例 Schema,支持自定义字段名、数量范围和数组输出,适合前端联调、接口测试和样例数据构造。
相关推荐
关于 JSON 生成器与 Mock 测试数据
JSON 生成器(JSON Generator / JSON Mock 工具)是一种通过声明式字段定义,一键产出符合指定结构的随机 JSON 数据的工具。它通常面向前端开发、后端联调和自动化测试三大场景,目的是让开发者在「接口未就绪」或「需要批量造数据」时,无需手写循环和随机函数,就能得到语法合法、结构可控的测试数据。
市面上常见的 JSON 生成器分两类:第一类是模板语法型(如 json-generator.com 的 Handlebars 风格 {{repeat(5)}}、extendsclass 的 random(1,100) 函数式),灵活度最高但需要学习模板语法;第二类是可视化字段构建型(本工具采用),通过 GUI 添加字段并选择类型,所见即所得,门槛最低,更适合产品、测试、前端非全栈工程师。
Mock 数据(Mock Data)是指用于模拟真实业务数据的伪造数据,必须满足三个特征:结构与真实接口一致、字段值有合理范围、覆盖典型场景。优秀的 Mock 数据能让前端在接口开发前就完成 90% 的页面工作,也能让自动化测试稳定运行而不依赖真实后端环境。
本工具内置的 13 种字段类型覆盖了大多数接口测试场景:String / Integer / Number / Boolean 用于基础值类型;Email / Name / UUID / Date / URL / Phone 用于业务字段;Paragraph 用于长文本;Enum 用于状态机 / 角色 / 等级等受控离散值;Array 用于列表字段。所有生成过程完全在浏览器本地通过 JavaScript 完成,不依赖任何网络请求。
随机性是 JSON 生成器的核心:UUID 字段遵循 RFC 4122 v4 规范(含正确的版本位和变体位)、Email 由内置常见名 + 测试域名组合、日期在 2020-01-01 到当前时间之间随机采样。如果你的项目需要「可复现」的测试数据(例如回归测试),建议生成一次后下载为 .json 文件保存作为 fixture 反复使用。
适用场景
- 运维配置监控告警:构造Prometheus告警规则JSON模板验证告警触发与抑制策略。
- 产品经理写PRD时构造样例JSON作为UI设计与开发对齐的视觉与交互参考。
- 数据分析师准备示例数据集演示仪表盘图表、聚合函数与数据透视结果。
- 跨模块联动:生成Mock用户JSON后通过JSON→TypeScript工具导出User接口类型供前端TypeScript项目使用。
- 跨模块联动:生成商品订单JSON后转为SQL INSERT脚本批量导入本地数据库做演示环境初始化。
- 与JSON Diff工具配合:对比新老Schema生成的数据差异,验证接口升级后字段兼容性。
- 接口调试Postman/Apifox:把生成结果粘贴到Body区直接发送请求验证接口契约字段是否完整。
- 自动化测试Fixture:下载generated.json到Jest/Vitest的__fixtures__目录作为固定输入做断言以保证测试可复现。
- CI/CD流水线模拟:在CI脚本中生成固定结构JSON作为下游步骤的输入文件验证流水线完整性与参数传递。
- 客服工单系统构造:批量生成带有status枚举(pending/in_progress/resolved/closed)的工单JSON模拟客服系统工单流转。
- 日志分析工具构造样例:批量生成模拟服务端日志JSON用于ELK/Loki等日志平台的解析规则验证与可视化测试。
- IoT设备上报数据Mock:生成deviceId(UUID)+temperature(Number 0-50)+timestamp(Date)的传感器JSON测试MQTT接入网关。
使用方法
- 在左侧「模式构建器」中查看默认示例 Schema(id / name / email / age / active / createdAt / bio 共 7 字段),或点击「+」新增自定义字段
- 为每个字段设置字段名(自定义)和字段类型(13 种下拉选择);数值与段落类型可填 min / max,Enum 类型可填逗号分隔的候选值
- 勾选「生成为数组」并设置数量(1-1000),或取消勾选只生成单条 JSON 对象
- 点击右上角「生成」按钮,右侧编辑器即时显示格式化好的 JSON 结果,并显示字段数和生成条数
- 点击「复制」把结果粘贴到代码 / 接口工具,或点击「下载」保存为 generated.json 文件
功能特点
- 13 种内置字段类型:String / Integer / Number / Boolean / Email / Name / UUID / Date / URL / Phone / Paragraph / Enum / Array,开箱即用无需记忆模板语法
- 可视化字段构建器:通过图形界面增删字段、设置字段名与类型,所见即所得,无需手写 JSON 模板
- 数值与段落范围控制:Integer、Number 与 Paragraph 类型支持自定义最小值与最大值,生成更贴近业务的数据
- Enum 自定义枚举值:可输入逗号分隔的值列表(如 admin,user,guest),生成受控的离散选项
- 单对象 / 数组一键切换:通过勾选「生成为数组」+ 数量输入(1-1000),可在单条 JSON 与数组形式之间自由切换
- 示例 Schema 快速加载:内置 7 字段示例(id / name / email / age / active / createdAt / bio),点击即可生成完整样例
- 代码高亮输出面板:右侧 CodeMirror 编辑器实时显示生成结果,支持 JSON 语法高亮、行号与只读浏览
- 一键复制与下载:生成结果可一键复制到剪贴板,也可直接下载为 generated.json 文件
- 纯本地浏览器运行:所有字段构造与数据生成完全在你的浏览器内完成,数据零上传,敏感业务字段可放心使用
- 桌面与移动端适配:PC 端左右分栏可调,移动端自动切换输入/输出 Tab,操作顺手
代码示例
JavaScript:用 fetch + 生成数据做接口联调
javascript把生成器下载的 generated.json 放到本地 mock 目录,被 fetch 拦截返回,用于前端独立联调。
// 把 generated.json 放到 /public/mock/users.json
// 然后用 fetch 获取作为 Mock 数据
async function fetchMockUsers() {
const res = await fetch('/mock/users.json');
const users = await res.json();
console.log(`加载了 ${users.length} 个用户`);
return users;
}
// 直接内嵌到代码里使用(适合测试用例)
const mockUsers = [
{ id: 1, name: 'Jennifer Martinez', email: 'jennifer.martinez382@example.com', age: 42, active: true },
{ id: 2, name: 'Robert Smith', email: 'robert.smith918@test.org', age: 67, active: false }
];
// 或在 Jest / Vitest 中作为 fixture 引入
import users from './fixtures/users.json';
test('渲染用户列表', () => {
render(<UserList users={users} />);
expect(screen.getAllByRole('listitem')).toHaveLength(users.length);
});Python:用 Faker 库做更复杂的 Mock 数据生成
python如果本工具的 13 种字段类型不够用,Python 的 Faker 库支持 100+ 种本地化数据生成器,可与生成器配合使用。
# 安装: pip install faker
from faker import Faker
import json
fake = Faker('zh_CN') # 中文本地化
# 生成单个用户
def gen_user():
return {
"id": fake.random_int(min=1, max=99999),
"name": fake.name(),
"email": fake.email(),
"phone": fake.phone_number(),
"address": fake.address(),
"company": fake.company(),
"created_at": fake.iso8601()
}
# 批量生成 100 条并写入 generated.json
users = [gen_user() for _ in range(100)]
with open('generated.json', 'w', encoding='utf-8') as f:
json.dump(users, f, ensure_ascii=False, indent=2)
print(f"已生成 {len(users)} 条用户数据")命令行:用 curl + jq 把生成数据 POST 到接口
bash压测或初始化数据时,可用 curl 把生成器下载的 generated.json 直接 POST 到目标接口。
# 假设 generated.json 在当前目录,目标接口为 POST /api/users
# 批量初始化数据
for i in $(seq 1 10); do
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @generated.json | jq '.'
done
# 或者用 jq 抽取单条再 POST
cat generated.json | jq '.[0]' | \
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @-常见问题
JSON 生成器是做什么的?怎么用?
JSON 生成器用于一键生成符合指定结构的随机 JSON 数据,常用于前端 Mock、接口联调和自动化测试。使用方法:在左侧 Schema 构建器中添加字段并设置字段名与类型(可选 min/max 范围或枚举值),勾选「生成为数组」并输入数量,点击「生成」即可在右侧看到结果,直接复制或下载即可使用。
支持哪些字段类型?
内置 13 种常用字段类型:String(随机字符串)、Integer(整数)、Number(小数)、Boolean(布尔值)、Email(邮箱)、Name(英文姓名)、UUID(符合 RFC 4122 v4 规范)、Date(ISO 8601 时间戳)、URL(网址)、Phone(美式电话号码)、Paragraph(多词段落)、Enum(自定义枚举)、Array(字符串数组)。覆盖绝大多数接口测试场景。
如何自定义生成数量?能一次生成 1000 条吗?
勾选「生成为数组」复选框后,在数量输入框填入 1-1000 之间的任意整数,点击生成即可输出对应数量的对象数组。1000 条是工具上限,已足以满足绝大多数接口压测和批量构造场景;如需更多,可在本地脚本中循环调用或使用 Faker.js 等库。
Enum 字段怎么用?能自定义值吗?
把字段类型切换为 Enum 后,会出现一个输入框,按逗号分隔填写候选值(如 admin,user,guest,或 high,medium,low),生成时随机抽取其一。这非常适合构造角色、状态、等级等受控离散字段,避免每次手动写死。
能控制数字和段落的取值范围吗?
可以。Integer、Number 类型支持填写 min 和 max,工具会按该范围生成随机整数或小数(保留 2 位小数);Paragraph 类型同样支持 min/max 控制词数(例如 20-100 词)。这让生成的数据更贴近真实业务,避免出现 age=999999 这类明显造假的值。
生成的 UUID 符合规范吗?
符合。UUID 字段按 RFC 4122 v4 规范生成,包含正确的版本位(4)和变体位(8/9/a/b),可直接作为数据库主键、订单号、追踪 ID 等使用。
生成结果可以一键复制和下载吗?
可以。点击工具栏的「复制」按钮即可把格式化好的 JSON 复制到剪贴板;点击「下载」按钮则会自动保存为 generated.json 文件,文件名可在浏览器下载列表中查看,文件内容与编辑器中显示完全一致。
JSON 生成器与 JSON 格式化有什么区别?
二者用途互补:JSON 生成器从零创建新的随机 JSON 数据,用于测试和 Mock;JSON 格式化整理已有的 JSON 内容,用于美化和校验。建议先用生成器拿到测试数据,再用格式化工具做进一步排版检查或转 TypeScript/Java 等代码结构。
生成的数据会上传到服务器吗?安全吗?
不会。所有字段构建、随机数据生成、复制下载操作完全在你的浏览器本地通过 JavaScript 执行,数据不会上传到任何服务器,也不会被记录或缓存。包含内部接口字段、未上线业务结构、敏感测试场景都可以放心使用,关闭页面即清除。
怎么把生成结果直接用于接口测试?
复制生成结果后,可粘贴到 Postman / Apifox / Apipost 的 Body 区直接发送;或在 Jest / Mocha / Pytest 等测试框架中通过 JSON.parse 读取作为 fixture;前端开发也可把下载的 generated.json 放到本地 mock 目录下被 axios / fetch 拦截返回。
生成的「姓名」和「邮箱」是真实数据吗?
不是真实数据。Name 字段由内置英文姓 / 名库随机拼接,Email 字段拼接名 + 姓 + 序号 + 测试域名(example.com / test.org 等),全部为虚构样例,请勿用于真实业务验证,也不要尝试向生成的邮箱地址发送邮件。
可以一次只生成 1 个对象而不是数组吗?
可以。取消勾选「生成为数组」复选框即可输出单个 JSON 对象(而非数组),适合接口单条调试、文档示例或单条数据预览;再次勾选并填入数量即可切回数组模式。
故障排查
点击「生成」后提示「请至少添加一个字段」
说明当前 Schema 中没有任何字段名(field.name)填写有效的字段。检查左侧字段构建器:每行必须填写字段名才能参与生成,空字段名会被自动跳过。可以点击「+」添加新字段,或参考顶部「模式构建器」的示例 Schema 重新填入字段名。
生成结果字段顺序与左侧不一致
JSON 规范本身不保证字段顺序,但本工具会严格按照 Schema 中字段从上到下的添加顺序输出。检查左侧字段是否被意外删除或重新添加;如果顺序仍不对,刷新页面后按目标顺序重新添加一次即可。
Enum 字段生成总是空字符串
Enum 字段需要在输入框中填写逗号分隔的候选值(如 admin,user,guest),如果输入框为空或只填了逗号,会得到空字符串。确保至少填写一个有效候选值,工具会在每次生成时随机抽取其一。
数字字段出现 NaN 或 undefined
通常是 min 和 max 输入框留空或填了非数字。Integer/Number 字段即使不填范围也有默认值(0-100),但如果填了字母或负数等非法值可能导致异常。建议只填整数,或干脆留空使用默认值。
Paragraph 字段生成的句子不通顺
Paragraph 类型使用内置 lorem 词库随机组合,刻意不通顺以避免与真实英文段落重复。如需更真实的文本,建议使用 Python Faker 库或 Hugging Face 的文本生成 API;如果只是用于 UI 排版测试,lorem 段落已完全够用。
下载的 generated.json 找不到文件
点击「下载」后浏览器会在默认下载目录保存 generated.json。部分浏览器(特别是移动端)需要手动在下载列表中查找。如果使用 Safari,建议在偏好设置中查看下载位置;Chrome 用户可直接在地址栏旁的下载图标查看。
想生成单条 JSON 而不是数组
取消勾选 Schema 构建器下方的「生成为数组」复选框即可。取消后,无论数量输入框填什么,都只会输出单个 JSON 对象 {},适合接口单条调试、文档示例或单条 fixture 保存。
生成 1000 条时页面卡顿
1000 条已接近浏览器单次渲染的上限。如果生成后右侧编辑器滚动卡顿,建议:① 生成后立即点击「复制」或「下载」拿到数据后关闭页面;② 或分批生成(如 500 + 500 后手动合并);③ 极致压测场景建议直接用 Python Faker / Mock.js 等原生脚本。
术语表
- JSON
- JavaScript Object Notation,轻量级的数据交换格式,由键值对和数组构成,是 Web API 和前后端数据传输的事实标准。
- Mock 数据
- 模拟真实业务场景的伪造数据,用于前端开发、接口联调、自动化测试等尚未对接真实后端的场景,要求结构与真实接口一致。
- Schema
- 描述数据结构的定义,例如「用户包含 id、name、email 三个字段」。本工具中 Schema 指左侧字段构建器中定义的字段名与类型集合。
- UUID (v4)
- 通用唯一标识符,RFC 4122 标准定义的 128 位字符串。v4 基于随机数生成(含 13/8/9/a/b 变体位),几乎不会重复,常用于分布式主键。
- 字段类型 (Field Type)
- 本工具中每个字段必须指定的数据类型,决定该字段会生成何种格式的随机值。例如 Email 类型生成邮箱格式字符串,Integer 类型生成整数。
- Enum(枚举)
- 从预定义离散值集合中随机抽取一个的字段类型。例如定义 admin,user,guest 三选一,适合角色、状态、等级字段。
- min / max
- 字段取值范围约束,仅对 Integer、Number、Paragraph 三种类型生效。设置后随机数将在该闭区间内生成,避免出现明显造假的边界值。
- 单对象 vs 数组输出
- 本工具支持两种输出形式:取消勾选「生成为数组」时输出单个 JSON 对象 {}(适合接口单条调试),勾选并填入数量时输出对象数组 [...](适合批量数据)。
- RFC 4122
- UUID 的国际标准规范,定义 UUID 的格式、版本(v1-v5)和变体位。本工具生成的 UUID 符合 v4 规范。
- CodeMirror
- 浏览器端代码编辑器组件,本工具右侧输出区使用 CodeMirror 提供 JSON 语法高亮、行号显示与只读浏览能力。
- 本地处理
- 所有字段构造和数据生成完全在用户浏览器内通过 JavaScript 执行,不上传到任何服务器,更快也更安全,适合处理敏感业务字段。
- Fixture
- 测试中固定使用的样例数据文件。生成器输出可保存为 generated.json 作为后续回归测试的 fixture,确保测试结果可复现。
字段类型与生成规则速查表
本工具 13 种内置字段类型的取值范围、典型用途与示例:
| 字段类型 | 生成规则 | 示例 | 典型用途 |
|---|---|---|---|
String | a-z 与 0-9 随机组合,长度 min-max(默认 5-20) | a8f3k0d2 | 通用随机字符串、ID 前缀、Token |
Integer | 闭区间 [min, max] 内的随机整数(默认 0-100) | 42 | 年龄、数量、计数、排序 |
Number | 闭区间 [min, max] 内的随机小数,保留 2 位 | 73.28 | 价格、评分、坐标、概率 |
Boolean | true / false 等概率随机 | true | 是否激活、是否删除、开关状态 |
Email | firstName.lastName + 1-999 + 内置测试域名 | james.smith247@example.com | 用户邮箱、通知收件人 |
Name | 内置英文 FirstName + LastName 库随机组合 | Jennifer Martinez | 用户名、客户名、作者名 |
UUID | RFC 4122 v4 规范,含版本位 (4) 与变体位 | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 主键 ID、订单号、追踪 ID |
Date | 2020-01-01 至当前时间的 ISO 8601 时间戳 | 2024-08-15T07:23:11.000Z | 创建时间、更新时间、生效日期 |
URL | https://www.{测试域名}/{lorem 词}-{1-999} | https://www.test.org/lorem-742 | 头像 URL、跳转链接、资源地址 |
Phone | +1-XXX-XXX-XXXX 美式电话格式 | +1-415-308-7241 | 联系电话、客服号码 |
Paragraph | min-max 词数的 lorem 段落(默认 10-50) | lorem ipsum dolor sit amet ... | 简介、备注、描述、评论 |
Enum | 从逗号分隔的自定义值列表中随机抽取 | admin | 角色、状态、等级、类型 |
Array | 1-5 个 String 元素组成的字符串数组 | ["a8f", "k0d", "92x"] | 标签、关键词、附属字段集合 |
常见 JSON 生成场景与推荐字段组合
下面列出几种最常见的接口测试数据场景及其推荐字段组合,可直接参考添加:
| 场景 | 推荐字段组合 | 建议数量 |
|---|---|---|
| 用户列表接口 | id (Integer) + name (Name) + email (Email) + age (Integer 18-80) + active (Boolean) + createdAt (Date) + bio (Paragraph) | 20-50 |
| 商品列表接口 | id (Integer) + name (String) + price (Number 10-9999) + stock (Integer) + category (Enum: electronics,clothing,food,book) + imageUrl (URL) | 30-100 |
| 订单接口 | orderId (UUID) + userId (Integer) + amount (Number 1-10000) + status (Enum: pending,paid,shipped,delivered) + createdAt (Date) | 10-30 |
| 博客文章列表 | id (Integer) + title (String) + author (Name) + content (Paragraph 50-200) + tags (Array) + publishedAt (Date) | 10-20 |
| 评论列表 | id (Integer) + author (Name) + email (Email) + content (Paragraph) + rating (Integer 1-5) + createdAt (Date) | 50-200 |
| 地址簿接口 | id (Integer) + name (Name) + phone (Phone) + city (String) + zipcode (String) + isDefault (Boolean) | 5-10 |
Privacy & Security
本 JSON 生成器所有字段构建、随机数据生成、复制下载操作完全在你的浏览器本地通过 JavaScript 完成,你定义的 Schema、生成的随机数据、字段名和数量都不会被上传到任何服务器,也不会被记录、缓存或存储到云端。包含内部接口字段、未上线业务结构、敏感测试场景可以放心使用,不存在数据泄露风险。
Authoritative References
- JSON 压缩
- CSV 转 JSON
- JSON 转 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON扁平化
- JSON 格式化
- JSON 生成器
- JSONPath 查询
- JSON 合并
- JSON 修复
- JSON Schema 校验
- JSON 排序
- JSON Stringify
- JSON 转 HTML
- JSON 转 Java
- JSON 转 Markdown
- JSON 转 SQL
- JSON 转 TOML
- JSON 转 TypeScript
- XML 转 JSON
- JSON 转 XML
- YAML 转 JSON
- JSON 转 YAML
- JSON 转 Python
- JSON 转 Go
- JSON 转 Rust
- JSON 转 Swift
- JSON 转 C#
- JSON 转 C++
- JSON 转 PHP