模式推断工具

每一次新的集成都以相同的方式开始:一个 API 返回一段 JSON,你需要一个模型来存放它。手动敲出 20 个字段既枯燥又容易出错。这个工具会解析一个 JSON 示例对象,为每个键推断列类型,并按你想要的格式生成可直接粘贴的模式:SQL CREATE TABLE、Mongoose 模式或 Sequelize 模型定义。

如何从 JSON 推断模式

  1. 1

    粘贴一个示例对象

    输入一个 JSON 对象,或一个对象数组(读取数组中的第一个对象)。使用一条所有字段都已填写的完整记录,让每一列都能得到类型。

  2. 2

    选择输出格式

    SQL CREATE TABLE(Postgres / MySQL / SQLite 风格)、用于 MongoDB 的 Node.js 应用的 Mongoose,或用于关系型 Node.js 应用的 Sequelize。

  3. 3

    为表或模型命名

    设置 SQL 输出中的表名,或 Mongoose 和 Sequelize 输出中的模式或模型名称。

  4. 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 的字段会被推断为文本/字符串类型,这通常不是你想要的。
  • 生成后重命名保留字。typeorderuser 这样的字段在 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。

相关工具

此工具还提供其他语言版本