JSON 转 Rust
从 JSON 生成带 Serde 属性的 Rust 结构体
粘贴 JSON 或加载示例以生成 Rust 代码。
JSON 转 Rust 会生成什么
JSON 转 Rust 会将 API 响应或任意 JSON 示例转换为 Rust 结构体。开启 Serde 后,每个结构体都会派生 Serialize 和 Deserialize。自动重命名会检查 Serde 自身的大小写规则,仅在能还原该结构体所有键时添加 #[serde(rename_all = "camelCase")](或其他规则);不符合的键使用 #[serde(rename = "...")]。可选字段会添加 #[serde(default, skip_serializing_if = "Option::is_none")],以便写回时仍然省略。
使用方法
- 1.粘贴 JSON、上传或拖放 .json 文件,或加载一个示例。
- 2.设置根结构体名称,并选择 Debug、Clone 和 Serde derive。
- 3.选择自动重命名、固定规则或仅按字段重命名。
- 4.阅读输出下方的提示,然后复制代码或下载 models.rs。
类型如何推断
- •会检查数组中的每个元素,而不只是第一个,同一数组中的对象会被合并。
- •部分对象中缺少的键为可选;有时为 null 的键为可为 null。两者分开处理。
- •同一位置出现 1 和 2.5 时会放宽为小数;其他混合情况会给出提示。
- •空数组和始终为 null 的值没有类型依据,因此使用通用类型,并附提示说明原因。
- •类型映射:string → String,整数 → i64(超出范围时为 u64 或 serde_json::Value),小数 → f64,布尔值 → bool,数组 → Vec<T>,对象 → struct,缺失或 null → Option<T>,未知或混合 → serde_json::Value。
限制与隐私
示例只反映数据某一次的样子,而不是完整的 API 契约。在依赖这些代码之前,请检查可选字段、通用类型和数字宽度。输入限制为 5 MB 和 256 层嵌套;从 2 MB 起,需点击“生成”按钮才会生成。所有处理都在您的浏览器中运行,JSON 不会被上传。即使关闭 Serde derive,通用值也需要 serde_json crate。
