工具
指南

Mock JSON 生成器

JSON

使用 @faker-js/faker 生成假 JSON 数据——勾选预设字段或编写模板,选择语言,导出为 JSON 或 CSV。

100% 客户端 无后端

不获取远程 URL;请直接粘贴你的 JSON。

预设字段
输出
勾选字段或编写模板,然后生成。
本页内容

模拟 JSON 生成器是什么?#

逼真的测试数据,是每个原型都绕不开的无聊瓶颈。你想看看表格在五百行下怎么渲染、表单遇到奇怪的邮箱地址会怎样、图表在数字跨度三个量级时长什么样——结果却把一下午耗在反复敲 {"name":"test","email":"[email protected]"} 上,因为真实数据涉及隐私,你根本不能拿来做演示。

模拟 JSON 生成器就是来填这个空缺的。你描述出需要的对象形状——选几个字段类型,或者写一个带占位符的模板——它就按你的要求合成出任意行数的数据,每一行都不同,且没有一行是真实的人。产出是一份 JSON 数组,可以直接塞进 fixture 文件、演示数据库或 fetch 的 mock 里。

本页提供两种生成方式。预设模式(Preset) 给你一份常见字段菜单(全名、邮箱、电话、UUID、日期、公司等),勾选即可,每一行会变成带这些字段的对象。模板模式(Template) 让你写一个带 {{faker.path}} 占位符的 JSON 骨架,因此键名和嵌套完全由你掌控。产出可下载为 JSON 或 CSV,前者喂给程序、后者走电子表格路线;同时支持按地区生成,让名字贴合你要演示的受众。

怎么用#

  1. 从工具栏开关里选一个模式:
    • Preset(默认):左侧出现一组字段勾选项。勾上每行想要的字段——比如 Full name、Email、UUID。每个字段有固定的默认键名(name、email、uuid)。
    • Template:换成一段文本框。在里面写一个 JSON 对象(或数组),字符串叶子节点处填入 {{person.fullName}}、{{internet.email}} 这类占位符。
  2. 设置 Count——要生成多少行,范围 0 到 1000。
  3. 选择 locale,决定生成的姓名、城市、电话号码的地域风味。提供十种语言环境,从 English 到中文、日本語、한국어、العربية。
  4. 点 Generate,右栏填入格式化好的 JSON 数组。
  5. 点输出区下方的 Download JSON 或 Download CSV 把结果存成文件(CSV 方便导入电子表格或通过 import 灌入数据库)。
  6. Sample 载入一个起步模板,Clear 重置。

生成引擎这份体量很大的库,只在第一次点 Generate 时才加载,所以页面打开是即时的。生成全程在浏览器里完成。

主要特性#

  • 两种写法。 勾选字段快速起步;需要自定义键名、嵌套,或字面量与生成值混排时,就写模板。
  • 十四种预设字段。 姓名、职位、邮箱、用户名、电话、UUID、近期日期、城市、国家、公司、URL、段落、颜色名——凑出一条演示记录常用的积木都在这。
  • 按地区生成。 切换 locale,姓名和地点数据会随之变化——演示需要本地化观感时尤其有用。
  • 模板占位符保留类型。 当占位符单独占据一个字符串叶子的全部内容时,会被解析为原生类型——所以 {{date.recent}} 会变成真正的 ISO 日期字符串,而不是一段带引号的碎片。
  • 最多一千行。 足够填满一个分页表格或一份有代表性的 fixture,又不会让标签页卡死。
  • JSON 与 CSV 双导出。 生成一次,按下游需要导出——程序用 JSON,表格用 CSV。
  • 纯本地处理。 数据在浏览器里合成,模板和产出都不会离开本页。

真实示例#

你需要十条用户记录做演示,每条带姓名、邮箱和唯一 id。保持在 Preset 模式,只勾选 Full name、Email、UUID,把 Count 设为 10,点 Generate。产出是一份 JSON 数组,前几行长这样:

[
  {
    "name": "Sara Schultz",
    "email": "[email protected]",
    "uuid": "f3a1c2b4-9d8e-4a7b-bc6e-1f2d3a4b5c6d"
  },
  {
    "name": "Derrick Watsica",
    "email": "[email protected]",
    "uuid": "b7e6d5c4-a3b2-4987-8d6e-5c4b3a2f1e09"
  }
]

每一行都不一样,没有一个地址是真实收件箱,UUID 也彼此唯一。如果遇到预设表达不了的结构——比如要把一个固定角色和生成字段混在一起——就切到 Template 模式,这样写:

{
  "id": "{{string.uuid}}",
  "name": "{{person.fullName}}",
  "role": "member",
  "email": "{{internet.email}}"
}

role 是字面量文本,所以每行都是 "member";另外三个字段则在每一行上解析出全新的合成值。行数设成你需要的数量,再导出即可。

常见问题#

这些邮箱地址是真实存在的收件箱吗,能发信吗?#

不能。所有值都是合成的——姓名是听起来合理的组合,邮箱地址遵循真实的格式但不会路由到任何人。这正是它的意义:你拿到的是看起来像生产数据的数据,用来测试排版、校验和排序,却不会碰到任何真实用户的信箱。

能让数据看起来贴合某个国家吗?#

可以。locale 选择器会改变姓名、城市和电话号码的生成方式。选中文(简体)生成的就是中文名,选日本語生成的就是日本名。演示要面向本地受众时,这一点很关键。

模板模式里,为什么 {{date.recent}} 显示成 ISO 字符串,而不是被引号包起来的逻辑?#

当占位符单独占据一个字符串叶子的全部内容时,它会被解析为生成器返回的原生值,而不是作为文本插值。一次”近期日期”调用返回的是真正的日期对象,随后在输出 JSON 里序列化成 ISO 字符串。如果你希望它嵌在前后文字里,就给它套上字面量——写成 "shipped on {{date.recent}}"——它就会被字符串化拼进这句话。

一次最多能生成多少行?#

最多一千行。这够填满一个分页表格、塞进一份 fixture、或通过 CSV 导入播种一个测试数据库。再多的话,分批生成,或者改用专门的数据库播种工具。

生成的数据可复现吗?#

每点一次 Generate 都会产出一组全新的随机数据——这正是你在 UI 里挑边界情况时想要的。本页没有把数值钉在某个种子上,所以别把某次输出当成日后能逐字节重现的东西;如果确实需要精确复现某一组数据,就把结果存成 fixture 文件。