JSONをRustに変換
JSONをRust structにオンライン変換。Rust開発用にSerde互換structを生成。無料、ブラウザで実行—サーバーにデータ送信なし。
JSON入力
Rust出力
JSONをRustとは?
RustでREST APIを呼び出す際、Serdeで何かをデシリアライズする前に、一致するstruct定義が必要です。特に深くネストされたJSONのstructsを手書きするのは面倒でミスが起きやすいです。このツールはSerde対応のRust structsを自動生成します。JSONを貼り付ければ#[derive(Serialize, Deserialize)]付きのすぐに使えるstructsが手に入り、Cargoプロジェクトに直接追加できます。
SerdeでSerialize/Deserializeのderiveを有効にしてください。Option Typesでオプショナルフィールドを設定できます。出力はserde_json::from_strとserde_json::to_stringで動作します。
変換は完全にブラウザで実行されます。JSONはサーバーに送信されません。
JSONをRustが役立つ場面
RustアプリでREST APIを消費する際、型付きstructが必要です。サンプルレスポンスを貼り付けるとSerde対応のstructが得られます。
使い方
JSONを貼り付けまたはアップロード
JSONを左のエディタに貼り付けるか、アップロードでファイルを読み込んでください。サンプルで例データを読み込めます。設定パネルでstruct名とオプションを設定してください。
生成されたstructを確認
右パネルに生成されたRust structが表示されます。ネストオブジェクトは別structに。配列はVec<T>になります。無効なJSONの場合は先にJSONフォーマッターまたはJSONバリデーターで修正してください。
コピーまたはダウンロード
コピーまたはダウンロードでコードを取得してください。Cargo.tomlにserdeとserde_jsonを追加してください。
JSONをRustの例
JSONオブジェクトからRust structを生成する例です。
例:加入者レコード
JSON入力:
生成されたRust出力:
JSONをRustが役立つ場面
REST API統合時に必要です。ここに貼り付けるとすぐに使えるSerde互換structが得られます。
2つのJSONをマージするにはJSONマージツールを使用してください。
APIレスポンス、設定ファイル、データエクスポートはJSONが多いです。ここで処理するとRust structを生成できます。
よくある質問
RustでSerdeを使ってJSONをデシリアライズするには?
Cargo.tomlにserde = { version = "1.0", features = ["derive"] }とserde_json = "1.0"を追加します。structにDeserializeを導出し、serde_json::from_str::<YourStruct>(&json_string)を呼び出します。JSONを貼り付けてここでstructを生成してください。
Rustの#[serde(rename)]は何をしますか?
#[serde(rename = "jsonKey")]はSerdeに特定のJSONキーをRustフィールド名にマッピングするよう指示します。JSONがcamelCase(planNameなど)を使い、Rust structがsnake_case(plan_name)を使う場合に便利です。ジェネレーターは必要に応じて自動的に追加します。
RustでオプションやnullableなJSONフィールドを処理するには?
Option Typesを有効にしてnullableフィールドをOption<T>でラップします。これにより、存在しないかnullのJSONフィールドはエラーを引き起こす代わりにNoneにデシリアライズされます。シリアライズ時にnullフィールドを省略するには#[serde(skip_serializing_if = "Option::is_none")]を追加できます。
JSONデータはサーバーに送信されますか?
いいえ。struct生成はブラウザ内で完全に実行されます。JSONがあなたのマシンを離れることはありません。
ネストされたJSONオブジェクトと配列はどうなりますか?
ネストされたJSONオブジェクトはそれぞれ独自の#[derive(Serialize, Deserialize)]を持つ独立したRust structsになります。配列はそれらのstruct型のVec<T>になります。ジェネレーターは任意の深さのネストに対応します。
関連ツール
Rust JSONはSerdeとserde_jsonを参照。JSONはJSON仕様を参照。