Skip to content

JSON to Rust 構造体コンバーター

JSONを貼り付けるだけで、慣用的なRust serde構造体を即座に生成。100%ブラウザ内で処理。i64/u64/f64を正しく型付け、nullはOption、camelCaseには#[serde(rename)]。無料。

トラッキングなし ブラウザで動作 無料
オプション
0 文字
Rust 出力
0
実際のAPIペイロードに対して、serdeのセマンティクスとrustfmtのフォーマットに照らして検証済みです。 — Go Tools Team · Jul 2, 2026

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. 1

    JSONを貼り付ける

    JSONオブジェクト・配列・APIレスポンスを入力欄に入れてください。変換は即座に始まります。

  2. 2

    出力を調整する

    ルート構造体の名前を変更し、serde derive、DebugとClone、pubの可視性を切り替えて、あなたのcrateのスタイルに合わせてください。

  3. 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構造体に変換するには?
入力欄にJSONを貼り付けてください。コンバーターはブラウザ内で即座に解析し、右側にserde deriveを付けたRust構造体を生成します。「コピー」をクリックして結果を取得できます — アップロードも、アカウントも、待ち時間もありません。
serde deriveは生成されますか?serdeとserde_jsonは必要ですか?
はい — 出力はデフォルトで#[derive(Debug, Clone, Serialize, Deserialize)]を使用します。Cargo.tomlにderive featureを有効にしたserdeを追加してください。serde_jsonを依存関係として必要とするのは、出力にserde_json::Valueが含まれる場合(空配列や混在配列、nullのみのフィールドで現れます)だけです。serdeトグルをオフにすると、プレーンな構造体が出力されます。
生成された構造体を使ってJSONを解析するには?
Cargo.tomlにserde_jsonを追加し、1行でデシリアライズします:let root: Root = serde_json::from_str(json)?;。生成されたDeserialize deriveが残りを処理します — バイトスライスにはserde_json::from_slice、ファイルやHTTPボディにはfrom_reader、書き戻すにはserde_json::to_stringを使ってください。
オプショナルフィールドやnullフィールドはどう扱われますか?
あるキーが一部の配列項目にのみ存在し他には存在しない場合、それはOptionフィールドになります。常にnullだけのフィールドはオプショナルなserde_json::Valueになります。serdeはOptionを自動的にオプショナルとして扱うため、#[serde(default)]属性は追加されず、必要もありません。
camelCaseのキーやRustのキーワードはどう扱われますか?
フィールド名は慣用的なsnake_caseに変換され、#[serde(rename)]属性が正確なJSONキーへマッピングし直します。typeやmatchのような予約キーワードはrename付きでtype_やmatch_として出力されます。これは生の識別子より堅牢で、self、crate、superもカバーするためです。
フィールドごとのrenameの代わりに#[serde(rename_all)]を使えますか?
このツールはフィールドごとの#[serde(rename)]を出力します。1つのペイロードがcamelCase、snake_case、不規則なキーを混在させている場合でも常に機能するからです。構造体のすべてのフィールドが1つの規約を共有しているなら、それらの属性を削除し、代わりに構造体に単一の#[serde(rename_all = "camelCase")]を付けてください。どちらも同じようにデシリアライズされます。
どのRust数値型を使いますか?
整数はi64にマッピングされ、値がi64::MAXを超えるとu64になり、u64を超えるとf64にフォールバックします — そのため大きなIDもラウンドトリップできます。小数点や指数を伴う数値(1.0や2e3など)はf64にマッピングされます。serdeは浮動小数点数を整数フィールドに入れることを拒否するためです。
日付やタイムスタンプはどう型付けされますか?
JSONには日付型がないため、2011-01-25のようなISO文字列やRFC 3339のタイムスタンプはStringとして出力されます。本格的な日付処理には、フィールドをchronoの型 — Utcタイムゾーンの DateTime、またはNaiveDate — に変更し、chronoのserde featureを有効にしてください。するとserdeがRFC 3339を自動的に解析します。
動的または未知のキーを持つオブジェクトはどう扱えばよいですか?
キーが変化する場合 — 例えばIDから値へのマップ — 生成された構造体をStringをキーとするHashMapに置き換えてください。型付き構造体を保ちつつ余分なフィールドも取り込むには、HashMap型の#[serde(flatten)]フィールドを追加します。完全に動的な値には、serde_json::Valueが万能の型です。
私のJSONデータはプライベートで安全ですか?
はい。変換はJavaScriptを使用して100%ブラウザ内で行われます。トークン・ID・顧客データを含むあなたのJSONは、ページから外に出ることも、サーバーに送信されることも一切ありません。
serdeなしのプレーンなRust構造体を生成できますか?
はい。serdeトグルをオフにすると、use serde行、SerializeとDeserializeのderive、そしてすべての#[serde(rename)]属性が取り除かれ、クリーンな構造体が残ります。DebugとCloneのderive、そしてpubの可視性も切り替えられます。
このツールは無料ですか?アカウントは必要ですか?
完全無料で、登録も制限もなく、作業領域を散らかす広告もありません。

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進の出力に対応、アップロードは一切なし。