JSON to Rust 構造体コンバーター
JSONを貼り付けるだけで、慣用的なRust serde構造体を即座に生成。100%ブラウザ内で処理。i64/u64/f64を正しく型付け、nullはOption、camelCaseには#[serde(rename)]。無料。
オプション
JSON to Rust 変換とは?
JSON to Rust変換は、JSONサンプルを、serdeの#[derive(Serialize, Deserialize)]マクロを備えたすぐにコンパイルできるRust構造体に変換します。そのため、APIレスポンスや設定ファイルのためにデシリアライズのボイラープレートを手書きする必要がなくなります。この高速なRust構造体ジェネレーターは、正しい数値型を推論し、存在しないフィールドをOptionとしてマークし、snake_case以外のキーには#[serde(rename)]を追加します — すべて100%ブラウザ内で行われます。
サンプル
APIレスポンス
{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub id: i64,
pub name: String,
pub email: String,
pub active: bool,
pub roles: Vec<String>,
}
典型的なRESTペイロードは、クライアントにそのまま組み込めるserde対応の構造体になります。数値はi64と推論され、配列はVec<String>になります。
ネストオブジェクト
{"repo":"serde","owner":{"login":"dtolnay","id":100}} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub repo: String,
pub owner: Owner,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Owner {
pub login: String,
pub id: i64,
}
ネストされたオブジェクトは、フィールドから参照される個別の名前付き構造体(Owner)になります。同一の形状は重複排除されます。
オブジェクトの配列(オプショナルフィールド)
{"users":[{"id":1,"nick":"x"},{"id":2}]} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub users: Vec<User>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
pub nick: Option<String>,
}
オブジェクトの配列は1つの要素構造体にマージされます。一部の項目に存在しないキーはOption<String>になり、#[serde(default)]は不要です。
camelCaseのキー
{"login":"octocat","publicRepos":15,"followerCount":9001,"createdAt":"2011-01-25"} use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Root {
pub login: String,
#[serde(rename = "publicRepos")]
pub public_repos: i64,
#[serde(rename = "followerCount")]
pub follower_count: i64,
#[serde(rename = "createdAt")]
pub created_at: String,
}
フィールドはsnake_caseになり、#[serde(rename)]が元のJSONキーへマッピングし直します。loginのようにすでにsnakeのキーにはrenameは付きません。
JSONをRustに変換する方法
- 1
JSONを貼り付ける
JSONオブジェクト・配列・APIレスポンスを入力欄に入れてください。変換は即座に始まります。
- 2
出力を調整する
ルート構造体の名前を変更し、serde derive、DebugとClone、pubの可視性を切り替えて、あなたのcrateのスタイルに合わせてください。
- 3
コピーまたはダウンロード
生成されたRustをワンクリックで取得し、プロジェクトにそのまま貼り付けてください。
Common Use Cases
- 型付きAPIクライアント
- RESTやGraphQLのレスポンスサンプルを、reqwestや同様のクライアント向けのserde構造体に変換します。デシリアライズのボイラープレートを手書きする必要はありません。
- 設定やフィクスチャの解析
- serde_jsonでデシリアライズする必要のあるJSON設定ファイル、テストフィクスチャ、Webhookペイロードの構造体を生成します。
- 高速なプロトタイピング
- 見慣れないペイロードを貼り付けると、その形状がRustの型として即座に表示されます — 接続する前に新しいAPIを素早く探索する方法です。
変換の仕組み
- 構造推論
- 各オブジェクトは名前付き構造体になります。同一の形状は重複排除されるため、コピーではなく1つの構造体が得られます。オブジェクトの配列はキーごとにマージされ、一部の項目に存在しないキーはOption<T>になります。
- 正しい数値の型付け
- 整数はi64にマッピングされ、i64::MAXを超えるとu64に昇格し、u64を超えるとf64にフォールバックします。浮動小数点数はトークン(1.0、2e3)から検出されるため、serdeのデシリアライズが浮動小数点数と整数の不一致で失敗することはありません。
- 慣用的でコンパイル可能な識別子
- キーは#[serde(rename)]で元のキーへ戻すsnake_caseフィールドになります。Rustのキーワード、重複する名前、識別子でないキーはサニタイズされるため、出力は常にコンパイルできます。
- 100%クライアントサイド
- 解析と生成はネットワーク通信なしでブラウザ内で実行されるため、データはプライベートに保たれます。
クリーンなRust構造体のためのヒント
- ルート構造体に名前を付ける
- 読みやすいコードのために、デフォルトのRootではなく意味のあるルート名(例:User、ApiResponse)を設定してください。
- serde_jsonは必要なときだけ追加する
- serde_json::Valueは、空配列や型が混在する配列、nullのみのフィールドで現れます。可能であれば、より充実したサンプルからそれらのフィールドに具体的な型を与えるか、Cargo.tomlにserde_jsonを追加してください。
- Optionか必須かを見直す
- フィールドがOption<T>としてマークされるのは、サンプルがそれを省略している場合だけです。代表的なペイロードを貼り付けて、ツールが必須フィールドとオプショナルフィールドを正確に推論できるようにしてください。
よくある質問
JSONをRust構造体に変換するには?
serde deriveは生成されますか?serdeとserde_jsonは必要ですか?
生成された構造体を使ってJSONを解析するには?
オプショナルフィールドやnullフィールドはどう扱われますか?
camelCaseのキーやRustのキーワードはどう扱われますか?
フィールドごとのrenameの代わりに#[serde(rename_all)]を使えますか?
どのRust数値型を使いますか?
日付やタイムスタンプはどう型付けされますか?
動的または未知のキーを持つオブジェクトはどう扱えばよいですか?
私のJSONデータはプライベートで安全ですか?
serdeなしのプレーンなRust構造体を生成できますか?
このツールは無料ですか?アカウントは必要ですか?
関連ツール
すべてのツールを見る →Base64エンコーダー&デコーダー
エンコーディングとフォーマット
Base64のデコード・エンコードが無料でオンラインで行えます。リアルタイム変換、UTF-8・絵文字対応。100%ブラウザ上で動作しデータは外部に送信されません。登録不要。
Base64 画像変換ツール
エンコーディングとフォーマット
Base64 文字列やデータURIをブラウザ上で画像に戻します。プレビューし、寸法と MIME を確認して、PNG・JPG・GIF・SVG としてダウンロード。アップロード不要。
CSV to JSON 変換ツール
エンコーディングとフォーマット
CSVをブラウザ内で即座にJSONに変換。RFC 4180・型推論・ヘッダー行・大整数安全対応。100%プライベート、アップロード不要。
.env から JSON への変換ツール
エンコーディングとフォーマット
.env ファイルを貼り付けるだけで即座に JSON に変換。データベースのパスワードや API キー、トークンはブラウザから一切出ません。100% プライベート、アップロード不要、無料の dotenv パーサー。
無料HTMLエンティティデコーダー — HTMLをアンエスケープ
エンコーディングとフォーマット
HTMLエンティティをデコードし、HTMLをオンラインでアンエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の参照を文字に戻します。アップロードは一切なし。
無料HTMLエンティティエンコーダー — HTMLをエスケープ
エンコーディングとフォーマット
HTMLエンティティをエンコードし、特殊文字(< > & " ')をオンラインでエスケープ。無料・登録不要・100%ブラウザ内処理。名前付き・10進・16進の出力に対応、アップロードは一切なし。