Utilo

JSON 转类型定义

根据 JSON 生成 Go 结构体、Rust serde 结构体、Zod schema、Pydantic 模型、Kotlin data class、Java record、C# 类、Swift Codable 和 TypeScript 类型,自动识别数组中的可选字段和可空字段。

这个JSON到类型生成器的作用

写模型类以手写一个大API响应是缓慢的,容易出现错误的。粘贴一个 JSON 样本,这个工具推断出一个完整的类型模型,并将其打印成 Go 结构使用 json 标签,Rust 结构使用 serde 衍生,Zod 方案,Pydantic 模型,Kotlin 数据类,Java 记录,C# 类,Swift Codable 结构或 TypeScript 接口。嵌入式对象会成为自己的命名类型,对象数组会被合并,

使用方法

  1. 粘贴JSON到输入或加载样本。
  2. 设置 根类型名称,例如 User 或 OrderResponse。
  3. 选择目标语言。输出会立即再生。
  4. 复制代码到您的项目中并调整您的域知识超过推理的名称或类型。

推理是如何工作的

  • 可选字段: 如果数组中的某些元素缺少一个键,则标记为可选 (TS 中的?,Rust 中的Option<T>,Go 中的omitempty,Pydantic 中的= None)。
  • 可取消的字段: null 值使得目标语言中的字段可以取消。
  • **数:**整数和浮量分别被追踪,因此42变成int64/i64/Long,而4.2变成浮量类型。
  • **混合类型:**当同一个字段包含不同的类型时,具有联盟的语言 (TypeScript,Zod,Pydantic) 得到一个联盟,而其他类型则回归到一个通用JSON值类型。
  • 命名: user_id 或 created-at 这样的密钥每种语言都被转换为语义字段名称,原始密钥被保存在标签或注释中 (json:"user_id",#[serde(rename)],@SerialName,CodingKeys)。

提示

  • 给它一个代表性样本。一个空数组的单个对象不会告诉该工具数组的项目。
  • 将多个响应合并到一个顶级数组中,以可靠地捕获可选字段。
  • 结果出口的模式和推断类型,所以你得到运行时验证和静态打字一起。

常见问题

我的JSON有没有上传到任何地方?

没有。解析和代码生成发生在浏览器中的背景工作者。

为什么一个字段被键入为any或interface{}?

在每一个样本中都是null,或者是空数组,。提供一个具有真实价值的样本。

这里可以处理约会吗?

JSON没有日期类型,所以ISO字符串是字符串。如果解码器支持,请手动将它们更换为time.Time,datetime或Date。

可以生成 JSON 方案吗?

使用 Zod 或 Pydantic 输出;两个库都可以直接导出 JSON 方案。

安全。所有处理都通过 JavaScript、Web Worker 和浏览器 API 在本地完成,你输入、粘贴或上传的任何内容都不会发送到我们的服务器。

本页内容由英文自动翻译而来,如发现错误,欢迎告诉我们。