AiLounge Tools

数据结构与类型转换

把 JSON 样本推导成 TypeScript 类型或 JSON Schema,并在受控 YAML 子集内完成 JSON↔YAML 往返;全部在浏览器本地计算,不上传正文。纯浏览器本地处理 · 零服务端 API

JSON → TypeScript 类型推导

从一段 JSON 样本推导可被 TypeScript 解析的 interface / type:支持嵌套对象、数组、null、空对象、混合数组联合类型与特殊键引号;纯本地计算。

在浏览器中运行

输入与参数

真实示例

{"id":1,"active":true,"deleted":null,"empty":{},"tags":["a",2,{"x":false}],"__proto__":{"polluted":true}}
→ // 空对象推导为 Record<string, never>;它表示「没有已知键」,不是任意对象。

export interface RootTagsItem {
  x: boolean;
}

export interface Root__proto__ {
  polluted: boolean;
}

export interface Root {
  id: number;
  active: boolean;
  deleted: null;
  empty: Record<string, never>;
  tags: Array<string | number | RootTagsItem>;
  "__proto__": Root__proto__;
}

限制与失败处理

单个 JSON 样本只能推导样本中出现的形状,不能代表所有运行时数据;超大整数只标注 number 并附精度提示;输出不是完整类型系统,也不含泛型可配置策略。输入上限 1 MiB / 深度 64 / 60000 节点,错误含行列号。

FAQ

空数组和空对象怎么处理?

空数组没有样本元素,推导为 unknown[];空对象推导为 Record<string, never>,两者都不伪造结构。

字段名含连字符或保留字怎么办?

自动输出加引号的属性名,例如 "a-b"、"constructor"、"__proto__",保证声明能被 TypeScript 解析。

能执行 JavaScript 对象字面量吗?

不能,也不接受未加引号的键、单引号、注释或函数;输入必须是严格 JSON,绝不 eval 用户代码。