JSON 转 Rust 结构体
JSON 转 Rust 结构体工具,生成带 serde derive 的 struct 与类型注解,可选字段自动包 Option<T>,嵌套对象与 Vec<T> 完整展开。生成过程在浏览器本地完成,数据不上传。
在工作台中打开 本地处理 · 数据不上传
怎么使用
- 1
粘贴 JSON
粘贴 JSON 数据,蛇形键自动转为 Rust 命名风格并通过 serde rename 保留映射。
- 2
设置根结构体名
默认 User,可按业务修改;字段命名遵循 Rust 蛇形规范。
- 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 一致。