UTILS.
100% ブラウザ内で完結
🦀

JSON から Rust Serde 構造体へ

JSON サンプルから serde の derive を付けた Rust 構造体を生成します。Serialize/Deserialize にすぐ対応し、null 許容フィールドは Option、rename 属性付き。

出力

このツールについて

JSON から Rust Serde 構造体へのツールは、貼り付けた JSON サンプルを serde 用に注釈付けした Rust 構造体に変換するので、すべてのフィールドを手書きせずに同じペイロードをデシリアライズできます。JSON を解析し、Rust の型を再帰的に推論して、オブジェクトごとに #[derive(Serialize, Deserialize, ...)] 構造体を出力します。文字列は String、整数は i64(すべてのサンプルが非負なら u64)、その他の数値は f64、真偽値は bool、配列は Vec<T>、ネストしたオブジェクトは親より前に定義される独自の PascalCase 構造体になります。

すべての処理は JSON.parse と純粋な JavaScript を使ってブラウザ内でローカルに行われ、何もアップロードされません。構造体のフィールドは snake_case に変換され、JSON キーが snake_case フィールドと異なる場合は常に #[serde(rename = "originalKey")] が追加されるため、構造体はワイヤーフォーマットに引き続きマッピングされます。一部の兄弟サンプルに存在しない、あるいは null として見られたキーは #[serde(default)] 付きの Option<T> になり、デシリアライズがその欠如を許容します。空配列は Vec<serde_json::Value> にフォールバックします。

整数幅トグルは 64 ビット(i64/u64、既定)と 32 ビット(i32/u32)の整数を切り替え、サンプル値が 32 ビットの範囲を超えると自動的に 64 ビットへ昇格します。derive トグルはフルセット(Serialize, Deserialize, Debug, Clone)と最小限の Serialize, Deserialize を選択します。ファイルは use serde::{Serialize, Deserialize}; で始まります。コピーするか .rs ファイルをダウンロードできます。

よくある質問

JSON の型は Rust にどうマッピングされますか?
string は String、整数は i64(すべてのサンプルが非負なら u64)、非整数の数値は f64、真偽値は bool、配列は Vec<T>、オブジェクトは serde derive 付きの名前付き構造体になります。null または欠損フィールドは #[serde(default)] 付きの Option<T> になります。
#[serde(rename)] はいつ追加されますか?
JSON キーが snake_case フィールド名と一致しないときは常に追加されます。たとえばキー userName はフィールド user_name と #[serde(rename = "userName")] を生成するため、構造体は元の JSON を正確にデシリアライズできます。
整数幅を選べますか?
はい。幅トグルは 64 ビット(i64/u64)または 32 ビット(i32/u32)の整数を出力します。符号の有無はデータに従い、すべて非負のサンプルは符号なし型を使います。32 ビットの範囲を超える値は自動的に 64 ビットへ昇格します。
どの derive が含まれますか?
既定は #[derive(Serialize, Deserialize, Debug, Clone)] で、最小オプションは Serialize, Deserialize のみを出力します。子構造体は参照する親より前に宣言されるため、モジュールはそのままコンパイルできます。

その他のツール