JSON 转 Go / Java / Python / Rust - 在线工具

把 JSON 示例一键生成 Go struct / Java POJO / Python dataclass / Rust struct,自动区分整数与浮点、合并数组元素、标记可选字段

JSON 转 Go / Java / Python / Rust · 使用说明

把 JSON 示例一键转成 Go、Java、Python、Rust 结构体:自动推断字段类型、区分整数与浮点,数组元素合并推断,只在部分记录出现的字段按各语言惯例标成可选(Go 用指针、Python 用 Optional、Rust 用 Option)。字段名会转换为目标语言的习惯写法,非法的键自动补上序列化注解。解析与生成全在浏览器本地完成,示例数据不会上传。

示例

输入
{"id":1,"name":"pxbo","score":4.5,"tags":["dev"]}
输出
type Root struct {
	ID    int64    `json:"id"`
	Name  string   `json:"name"`
	Score float64  `json:"score"`
	Tags  []string `json:"tags"`
}

如何使用

  1. 切到目标语言标签(Go / Java / Python / Rust)
  2. 把接口返回的 JSON 示例粘进输入框
  3. 填写根类型名并勾选需要的选项,代码会实时生成
  4. 点「复制代码」或「下载文件」拿走结果

小贴士

  • 数组里字段不一致时,仅部分元素出现的字段会自动标为可选
  • 同一个 JSON 既出现整数又出现小数时,会按浮点类型处理以免精度丢失
  • Go 的导出字段名遵循首字母缩略词惯例(id 会生成 ID 而不是 Id)

常见问题

JSON 转结构体会上传我的数据吗?

不会。类型推断和代码生成都在你的浏览器本地完成,内容不会上传任何服务器,页面关闭后也不留下记录,和站内 文件批量拖入 等本地工具一致。

和站内的 JSON 转 TS 有什么区别?

两者推断逻辑同源,JSON 转 TS 专注 TypeScript 并支持读写修饰符;本工具面向 Go / Java / Python / Rust,会额外区分整数与浮点、按各语言惯例处理可选字段,并给出对应的序列化注解。

Go 的可选字段为什么是指针?

Go 没有可选类型,值类型无法区分「没传」和「传了零值」。所以只在部分记录出现的字段会生成为 *string / *int64 这类指针并补 omitempty,能准确表达缺席语义。

生成的代码能直接用吗?

可以作为起点,但建议人工复核:枚举与联合类型在静态语言里没有直接对应物,会被退化成任意类型(Go 的 interface{} 等),需要按业务收敛;字段名也可能与团队命名规范不一致。

想先确认字段结构再生成?

可以先用 JSONPath 取出要建模的片段,确认样本干净后再粘贴,避免多个接口的样本混在一起导致类型被合并歪。

📂

松开以自动格式化

支持 .json / .sql / .csv / .html / .css / .xml / .yaml 文件