JSON 转 Rust 生成器

JSON 输入

正在加载编辑器…

生成的 Rust

Configuration

输入 JSON 数据以生成 Rust 结构体

具有所有权的内存安全结构体

如何将 JSON 转换为 Rust – 分步指南

使用此 JSON 转 Rust 生成器,可从 JSON 示例生成 Rust 结构体,适用于服务与 CLI,并可配合 serde 使用。

  1. 步骤 1 – 粘贴 JSON 示例

    • 将具有代表性的 JSON 对象或数组粘贴到左侧编辑器中。
    • 尽量包含嵌套对象、数组和可为 null 的字段,方便正确推断类型。
    • 使用 导入 从文件、URL 或示例数据加载 JSON。
  2. 步骤 2 – 选择 Rust 结构体选项

    • 设置根 结构体名称(例如 Root)。
    • 决定可选字段如何处理(Option<T>),未知类型如何处理(serde_json::Value)。
    • 确认命名与 serde 属性,让 JSON 键正确映射到字段。
  3. 步骤 3 – 检查生成的代码

    • 确认字段命名、类型推断,以及数组/对象的映射方式是否符合预期。
    • 根据需要调整 根类型名称、空值处理策略以及可选的框架选项。
    • 如果某些字段推断不准确,优化示例 JSON 后重新生成。
  4. 步骤 4 – 配合 serde 使用结构体

    • 添加 serdeserde_json 依赖,并启用 derive 宏。
    • 使用 serde_json::from_str 将 JSON 反序列化为根结构体。
    • 在需要更强保证时,在反序列化后做额外校验。
  5. 步骤 5 – 复制或下载

    • 将输出复制到项目中,或下载为文件。
    • 运行格式化/代码检查工具,让代码风格与项目保持一致。
    • 若目标语言需要序列化/解析库,请在项目中添加相应依赖。

快速提示

  • 可缺失或可为 null 的字段优先使用 Option<T>
  • 只有在时间格式稳定时才引入 chrono 等时间类型。
  • DTO 与内部领域类型分离,便于演进与兼容。
示例输出(简化)
// JSON 输入
{
  "id": 123,
  "name": "Maeve Winters",
  "email": "[email protected]",
  "active": true,
  "roles": ["admin", "editor"],
  "metadata": { "plan": "pro" },
  "createdAt": "2024-03-01T10:15:00Z",
  "score": 99.5,
  "notes": null
}

// 生成的 Rust 结构体(简化)
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct Metadata {
  pub plan: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Root {
  pub id: i64,
  pub name: String,
  pub email: Option<String>,
  pub active: bool,
  pub roles: Vec<String>,
  pub metadata: Metadata,
  pub createdAt: String,
  pub score: f64,
  pub notes: serde_json::Value,
}

相关 JSON 与 Rust 工具

探索更多可与本 JSON 转 Rust 生成器配合使用的 JSON 与 Schema 工具。

常见问题

支持哪些 Rust 特性?

生成器创建具有适当所有权、支持 Serde 序列化/反序列化并遵循具有内存安全保证的 Rust 命名约定的 Rust 结构体。

可以生成与 Serde 兼容的结构体吗?

可以!选择 'Serde' 作为框架可以生成带有 #[derive(Serialize, Deserialize)] 属性的结构体,以便使用 serde crate 进行自动 JSON 序列化。

Option 处理如何工作?

Rust 生成器默认使用 Option<T> 表示可空字段,确保内存安全和显式空值处理,遵循 Rust 的所有权模型。

借用和生命周期如何处理?

生成的 Rust 结构体使用拥有的类型(String 而不是 &str)来避免生命周期复杂性,使它们更易于使用,同时保持 Rust 的安全保证。

JSON 转 Rust 生成器 | JSONSwiss