JSON 转 Rust Struct
生成嵌套 Rust Struct、Serde Derive、Rename、Vec 与 Option 字段
字段可选性根据对象数组中的缺失值和 null 推断;混合类型会降级为通用类型,生成后仍需按真实 API 契约复核。
生成的 Rust structs 会显示在这里。
工具说明
JSON 转 Rust Struct 从一个 JSON 对象或代表性对象数组推断一组 Rust Struct。字符串、布尔、整数、小数、数组与嵌套对象分别映射到 String、bool、i64、f64、Vec 和命名模型;不兼容混合样例降级为 serde_json::Value。缺失或为 null 的属性变为 Option。可选 Serde Derive 与 rename/default 属性用于保留线上 Key 和反序列化行为,还可以控制字段是否使用 pub。生成器会清理 snake_case 标识符,并对 Rust 关键字使用 Raw Identifier。工具不能推断 chrono 类型、Enum、Lifetime、Borrow、自定义反序列化、数值边界或领域约束,因此应运行 rustfmt 并用代表性 Fixture 编译。
场景配方
为外部 API 起草 Serde 模型
目标:实现客户端逻辑前保留 JSON 线上 Key 与可空行为
- 粘贴多条代表性对象,让缺失字段和混合样例可见。
- 启用 Serde Derive,选择字段可见性,并生成领域根模型。
- 把通用值替换为 Enum 或 chrono 类型,补充 Crate Import,运行 rustfmt 并在测试中反序列化 Fixture。
结果:得到 Option 与 Serde 映射明确的嵌套 Rust 模型草稿。
常见问题
缺失字段和 null 怎样表示?
会生成 Option<T>;启用 Serde 时,可选字段还会获得 default 处理。
样例值类型不兼容会怎样?
字段会降级为 serde_json::Value,而不是猜测不安全的具体类型。
JSON 属性名会转成 snake_case 吗?
会;规范化改变名称时,Serde rename 属性会保留精确源名称。
Rust 关键字怎样处理?
type 等字段会输出为 r#type 形式的 Raw Identifier。
会推断 chrono 日期或 Enum 吗?
不会,字符串和重复值缺少足够领域信息,应在契约复核后调整。
JSON 会上传吗?
不会,解析、多样例推断、命名与 Rust 生成都在本地运行。
继续浏览