AiLounge Tools

数据结构与类型转换

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

可用操作

真实示例与限制

输入上限 1 MiB(按 UTF-8 字节计)、嵌套深度 64、节点 60000;超过会返回带行列号的可读错误。受控 YAML 子集只支持映射、序列、标量、引号字符串、布尔与 null;锚点 &、别名 *、<< 合并键、!!binary 等标签、块标量 |/>、显式文档标记与多文档流一律拒绝。YAML 1.2 风格日期只当作字符串,不创建 Date 对象。超出 IEEE-754 安全整数范围或高精度的数字保留原始十进制文本并显式提示精度策略,不声称无损。JSON 是样本而非完整类型系统:空对象推导为 Record<string, never>,空数组推导为 unknown[]。相关站 dev/diagram 当前为 planned 配置,未上线时不产生可访问的跨站链接。

FAQ

输入正文会被上传或保存吗?

不会。三个转换器都在页面内的纯 ESM 模块里运行,唯一的网络请求是同源 GET 获取公开 site.json 配置(不含请求正文)。没有服务端 API、没有文件上传、没有 eval,默认不写 localStorage;统计适配器未配置时是 no-op,且白名单字段不含正文。

大整数会不会被悄悄改值?

不会悄悄改:超出 Number.MAX_SAFE_INTEGER 的整数或高精度数值以原始十进制文本保留,并在输出注释、结果说明和警告中明确提示精度策略;TypeScript 只能写 number、JSON Schema 只能写 integer,本站不声称无损。

为什么别名、Date 和二进制标签不支持?

别名与 << 合并键可能被构造成指数膨胀的别名炸弹,因此一律拒绝、绝不展开;JSON 没有 Date 类型,日期样式标量按字符串保留并在输出时加引号;!!binary 等标签一律拒绝,二进制请改成带引号的 base64 字符串。

__proto__ / constructor 会污染原型吗?

不会。所有由用户数据构造的对象都使用 Object.create(null) 或 Map,特殊键只作为自己的数据键写入和序列化;测试固定向量明确断言全局 Object.prototype 未被修改。

输出能直接给 TypeScript / Schema 校验器使用吗?

TypeScript 输出是 interface 或 type 声明,字段含特殊字符、保留字或 __proto__ 时自动加引号;Node 22 的 TypeScript 语法剥离器已在测试中解析固定输出。Schema 输出可选 draft 2020-12 / draft-07,包含 $schema、type、properties、items、required 与 additionalProperties,混合数组用 items.anyOf。