模式推断工具
每一次新的集成都以相同的方式开始:一个 API 返回一段 JSON,你需要一个模型来存放它。手动敲出 20 个字段既枯燥又容易出错。这个工具会解析一个 JSON 示例对象,为每个键推断列类型,并按你想要的格式生成可直接粘贴的模式:SQL CREATE TABLE、Mongoose 模式或 Sequelize 模型定义。
如何从 JSON 推断模式
-
1
粘贴一个示例对象
输入一个 JSON 对象,或一个对象数组(读取数组中的第一个对象)。使用一条所有字段都已填写的完整记录,让每一列都能得到类型。
-
2
选择输出格式
SQL CREATE TABLE(Postgres / MySQL / SQLite 风格)、用于 MongoDB 的 Node.js 应用的 Mongoose,或用于关系型 Node.js 应用的 Sequelize。
-
3
为表或模型命名
设置 SQL 输出中的表名,或 Mongoose 和 Sequelize 输出中的模式或模型名称。
-
4
复制生成的模式
将它直接粘贴到迁移文件或模型文件中作为起点。
类型是如何推断的
推断是一种尽力而为的猜测。工具读取一个示例对象的各个值,并根据看到的值为每个键推断列类型。它不会比较记录,也不会判断哪些字段是可选的,因此请给它一个完整且有代表性的对象。
类型映射
| JSON 值 | SQL 类型 | Mongoose 类型 | Sequelize 类型 |
|---|---|---|---|
42(整数) |
INTEGER | Number | DataTypes.INTEGER |
3.14(小数) |
DECIMAL(10,2) | Number | DataTypes.FLOAT |
"你好"(短字符串) |
VARCHAR(255) | String | DataTypes.STRING |
| 长度超过 255 个字符的字符串 | TEXT | String | DataTypes.STRING |
"2026-04-18T10:00:00Z" |
TIMESTAMP | Date | DataTypes.DATE |
"2026-04-18" |
DATE | Date | DataTypes.DATEONLY |
true / false |
BOOLEAN | Boolean | DataTypes.BOOLEAN |
null |
TEXT | String | DataTypes.STRING |
[1, 2, 3](数组) |
JSON | Object | DataTypes.JSON |
{ "nested": ... }(对象) |
JSON | Object | DataTypes.JSON |
SQL 输出会额外添加什么
SQL CREATE TABLE 始终以一个自增主键开头:
id INTEGER PRIMARY KEY AUTOINCREMENT,
Mongoose 和 Sequelize 输出不会添加 id 字段,因为这两个库都会为你创建一个。
需要牢记的默认设定与限制
- 只读取一个对象。 如果你粘贴一个数组,只会检查第一个元素,因此是它的字段定义了整个模式。
- 缺失的键就是不存在的列。 示例对象中没有的字段根本不会出现在输出里。
- 嵌套的对象和数组会变成单个 JSON 列。 工具不会把它们展开为子表、子模式或外键。
- 不会生成任何约束。 列在输出时不带
NOT NULL、唯一性或索引,因此在你收紧之前它们都允许为 null。
让结果更整洁的建议
- 使用一条完全填写的记录。 在你的示例中为
null的字段会被推断为文本/字符串类型,这通常不是你想要的。 - 生成后重命名保留字。 像
type、order或user这样的字段在 SQL 中需要加引号。 - 把输出当作脚手架。 调整 VARCHAR 长度和 DECIMAL 精度、添加索引、将列标记为
NOT NULL,并在上线前选择真正的主键。
常见问题
嵌套的对象或数组会被映射为单个 JSON 列(在 SQL 和 Sequelize 中是 JSON,在 Mongoose 中是 Object 字段)。工具不会把嵌套结构展开成子表或子模式,因此如有需要,你需要自己进行扁平化或规范化。
不会。如果你粘贴一个对象数组,只会检查第一个对象,并由它的键定义模式。请确保这第一条记录包含你在意的所有字段,且每个字段都有真实的值。
不会。每一列都只带类型输出,因此结果中没有外键、唯一性约束、索引或 NOT NULL 子句。请手动添加它们,因为它们编码了工具无法从样本中恢复的意图。
为关系型数据库迁移选择 SQL CREATE TABLE,为运行在 MongoDB 上的 Node.js 应用选择 Mongoose Schema,为通过 Sequelize ORM 运行在关系型数据库上的 Node.js 应用选择 Sequelize Model。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
邮箱验证器
验证邮箱地址:RFC 5322 语法检查、实时 MX 记录查询,并显示本地部分、域名和长度详情。不会发送任何邮件。
EditorConfig 生成器
按你的缩进、换行符和字符集规则生成 .editorconfig,再为仓库里的每种语言加上正确的区块:Python、Go、YAML、Makefile 等等。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
此工具还提供其他语言版本
- Herramienta de Inferencia de Esquema [ES]
- Outil d'inférence de schéma [FR]
- Alat Inferensi Skema [ID]
- Schemainferensverktyg [SV]
- スキーマ推論ツール [JA]
- 스키마 추론 도구 [KO]
- Schema-inferentie-tool [NL]
- Công cụ suy luận lược đồ [VI]
- เครื่องมืออนุมาน Schema [TH]
- أداة استنتاج المخطط [AR]
- Schema-Inferenz-Tool [DE]
- Narzędzie do wnioskowania schematu [PL]
- Ferramenta de Inferência de Esquema [PT]
- Schema Inference Tool [EN]
- Strumento di Inferenza Schema [IT]
- Инструмент вывода схемы [RU]
- Şema Çıkarım Aracı [TR]