JSON 转 TypeScript

根据 JSON Sample 生成 TypeScript interface 或 type 声明。

数据与格式
正在准备工作区…
输入
输出
结果将显示在这里。

使用方法

  1. 粘贴文本、打开 UTF-8 文件,或试用 Sample。
  2. 选择输入与设置,然后运行工具,或开启自动运行。
  3. 检查结果后复制或下载。修改输入会使之前的结果失效。

JSON 转 TypeScript

根据 JSON Sample 生成 TypeScript interface 或 type 声明。

处理在浏览器本地完成,输入不会发送给 DevToolsy。

工作原理

嵌套对象会生成具名类型,数组中的对象会合并推导:缺少的属性设为可选,混合值生成联合类型,空数组使用 unknown[]。

处理前后对比
输入
{"project":"DevToolsy","members":[{"name":"Ada","role":"developer"},{"name":"Lin","active":true}],"tags":["web","tools"]}
输出
export interface Root {
  project: string;
  members: RootMembersItem[];
  tags: string[];
}

export interface RootMembersItem {
  name: string;
  role?: string;
  active?: boolean;
}

根据 JSON Sample 生成 TypeScript interface 或 type 声明。

选项与数据保真

可设置根类型名称、interface 或 type、readonly 及所有属性可选。字符串推导为 string,不生成字面量类型。

使用处理结果

单份 Sample 无法覆盖所有情况,请检查 null、缺失字段和数值精度,并另外加入运行时校验。

检查结果后复制或下载。修改输入会使之前的结果失效。

处理限制

每份 UTF-8 输入上限 1 MiB,输出上限 8 MiB。JSONPath 与 Schema 5 秒超时,其他工具 30 秒超时。

?

常见问题

如何推导嵌套对象与数组?

嵌套对象会生成具名类型,数组中的对象会合并推导:缺少的属性设为可选,混合值生成联合类型,空数组使用 unknown[]。

可以调整哪些 TypeScript 选项?

可设置根类型名称、interface 或 type、readonly 及所有属性可选。字符串推导为 string,不生成字面量类型。

生成的类型能校验后续 API 响应吗?

不能。单份 Sample 无法覆盖所有情况,请检查 null、缺失字段和数值精度,并另外加入运行时校验。

输入内容会上传吗?

处理在浏览器本地完成,输入不会发送给 DevToolsy。

可以打开本地文件吗?

UTF-8 输入最大 1 MiB · 输出最大 8 MiB

寻找下一个实用工具

语言

切换语言?当前页面的内容将被清空。请先复制或下载需要保留的数据。