JSON から Rust を生成

JSON 入力

エディターを読み込み中…

生成された Rust

Configuration

JSON データを入力して Rust struct を生成します

serde と型安全性に対応した struct

JSON を Rust に変換する方法 – 手順ガイド

この JSON→Rust 生成ツールを使って、serde サポート付きでサービスや CLI ツール向けに JSON サンプルから Rust 構造体を作成します。

  1. ステップ 1 – JSON サンプルを貼り付ける

    • 左側のエディターに代表的な JSON オブジェクトまたは配列を貼り付けます。
    • ネストしたオブジェクト、配列、null になり得るフィールドを含めて、型推論を正確にします。
    • Import を使ってファイル、URL、サンプルデータから JSON を読み込みます。
  2. ステップ 2 – Rust 構造体のオプションを選ぶ

    • ルート Struct Name を設定します(例: Root)。
    • オプションフィールド(Option<T>)と未知の値(serde_json::Value)の扱いを決めます。
    • JSON キーが正しくマップされるように命名と serde 属性を確認します。
  3. ステップ 3 – 生成されたコードを確認する

    • フィールド名、型、配列/オブジェクトの表現を確認します。
    • 利用可能なら Root Type Name、null の扱い、フレームワーク等のオプションを調整します。
    • 推論が違う場合は JSON サンプルを調整して再生成します。
  4. ステップ 4 – serde で構造体を使う

    • 依存関係に serdeserde_json を追加し、derive マクロを有効にします。
    • serde_json::from_str で JSON をルート構造体へデシリアライズします。
    • より強い保証が必要ならデシリアライズ後にバリデーションを追加します。
  5. ステップ 5 – コピーまたはダウンロード

    • 出力をプロジェクトにコピーするか、ファイルとしてダウンロードします。
    • フォーマッター/リンターを実行してコードスタイルを整えます。
    • 必要に応じて JSON の解析/シリアライズ用ライブラリを追加します。

クイックヒント

  • 欠落/ 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
}

// Generated Rust structs (simplified)
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 created_at: String,
  pub score: f64,
  pub notes: serde_json::Value,
}

関連する JSON & Rust ツール

この JSON→Rust 生成ツールと相性の良い JSON/スキーマ関連ツールもチェックしてください。

よくある質問

どのような Rust 機能に対応していますか?

derive マクロ付きの Rust struct を生成し、serde によるシリアライズ/デシリアライズに対応します。null は Option で表現し、Rust の命名規則に沿います。

serde はどう扱われますか?

Serialize / Deserialize の derive を付与し、必要に応じて serde 属性でフィールド名やオプションの扱いを調整します。

optional 値はどう扱われますか?

JSON の null は Option<T> にマップされます。必要に応じて #[serde(skip_serializing_if = "Option::is_none")] などを利用します。

コレクションはどう扱われますか?

JSON 配列は Vec<T> に、ネストされたオブジェクトは別 struct にマップされます。

JSON から Rust を生成 | JSONSwiss