JSON 转 Rust 结构体

JSON 转 Rust 结构体工具,生成带 serde derive 的 struct 与类型注解,可选字段自动包 Option<T>,嵌套对象与 Vec<T> 完整展开。生成过程在浏览器本地完成,数据不上传。

在工作台中打开 本地处理 · 数据不上传

怎么使用

  1. 1

    粘贴 JSON

    粘贴 JSON 数据,蛇形键自动转为 Rust 命名风格并通过 serde rename 保留映射。

  2. 2

    设置根结构体名

    默认 User,可按业务修改;字段命名遵循 Rust 蛇形规范。

  3. 3

    复制 Rust 代码

    生成 #[derive(Serialize, Deserialize)] 的结构体,配合 serde_json 即可解析。

功能特点

serde 生态原生

自动派生 Serialize/Deserialize/Debug/Clone,serde_json 开箱即用。

Option 精确标注

null 与缺失字段自动生成为 Option<T>,类型系统强制处理空值。

Vec 与嵌套结构

数组生成 Vec<T>,嵌套对象生成独立 struct,复杂 JSON 也能一次成型。

键名 rename

非蛇形键通过 #[serde(rename = "...")] 保留与原 JSON 的映射。

常见错误与排查

  • ! serde 默认对缺失非 Option 字段反序列化报错,接口可能不返回的字段应保持 Option<T>。
  • ! 混合类型字段生成枚举(enum)更符合 Rust 习惯,比 untagged 动态值更安全。
  • ! i64 装不下的大整数请手工换为 i128 或 String,避免精度问题。

常见问题

字段类型为什么有的是 Option?

Rust 没有 null,可空值必须显式表达:样例中出现 null 或键缺失时,字段标注为 Option<T>,读取时用 if let / match 处理,编译期杜绝空指针。

需要哪些 Cargo 依赖?

serde(features = ["derive"])与 serde_json 即可,生成代码的头部注释也给出了依赖说明与使用示例。

JSON 键名风格会保留吗?

Rust 字段使用蛇形命名,与 JSON 不一致的键自动添加 #[serde(rename = "原键")],序列化 / 反序列化均与原 JSON 一致。

相关工具