Free online JSON to Rust converter. Paste JSON and generate Rust struct definitions with serde Serialize/Deserialize derive attributes, rename annotations, and nested structure support. 100% browser-based with zero uploads.
100% browser-based — your data never leaves your device
Convert JSON to Rust structs instantly. Generate type-safe Rust structs with Serde derive macros from JSON samples.
Copy your JSON data and paste it into the input textarea above.
Toggle nullable field detection for Option<T> generation.
Click Generate, then copy the Rust structs or download the .rs file.
Drop a file here or click to browse
Ctrl+Enter to generate
Format, minify, validate, and explore JSON with tree view, JSONPath queries, and multi-format export — the complete JSON workbench.
JSON CompareCompare two JSON files side by side with real-time diff highlighting.
CSV to JSON ConverterConvert CSV data to JSON format with support for headers and custom delimiters.
YAML to JSON ConverterConvert YAML data to JSON format with support for complex nested structures.
JSON ValidatorValidate JSON data and detect syntax errors with detailed error messages and line numbers.
JSON to TOML ConverterConvert JSON data to TOML format for configuration files.
JSON Schema GeneratorGenerate JSON Schema (draft-07) from sample JSON data automatically.
HTML ↔ JSON ConverterConvert HTML markup to structured JSON and back.
JSON to CSV ConverterConvert JSON arrays to CSV format with customizable delimiter, headers, and nested object flattening.
JSON Query ToolExtract values from JSON using dot-notation and bracket-notation paths.
JSON to TypeScriptConvert JSON to TypeScript interfaces instantly. Generate typed interfaces from JSON samples for type-safe development.
JSON to PythonConvert JSON to Python dataclasses instantly. Generate typed Python classes from JSON samples for type-safe data handling.
This generator produces Rust structs with Serde derive macros from a JSON sample, running entirely in your browser. It infers String, i64, f64, bool, Vec, and Option types, and generates nested struct definitions for objects.
Each struct carries derive macros and serde rename attributes that map Rust field names back to the original JSON keys.
Rust HTTP clients deserialize JSON through Serde, and the structs must match the payload exactly or parsing fails at runtime. This generator produces those structs from a response sample, which is the reliable way to build a type-safe client for a new endpoint. It also covers Serde-compatible structs from configuration files and rapid prototyping of data models from mock JSON.
The output targets Rust 2018 and newer with Serde 1.x, emitting the derive macros you need for serialization and deserialization. Nullable fields become Option types when detection is enabled, nested objects become separate struct definitions, and the serde rename attributes keep snake_case Rust field names mapped to camelCase JSON keys. It gives you a compile-ready starting point that you can refine before it goes into your crate.
The JSON that becomes your structs often contains the very data your service protects, and the generated definitions describe your internal payloads precisely. Uploading that sample to a generator gives a third party a map of your service contracts.
This JSON to Rust generator converts everything locally in your browser, so the sample data never leaves your device. You can model data for production services while keeping your payload structures private.
Copy your JSON data and paste it into the input textarea above.
Toggle nullable field detection for Option<T> generation.
Click Generate, then copy the Rust structs or download the .rs file.
Practical examples to help you get the most out of JSON to Rust:
// JSON:
// {"id": 1, "name": "Alice", "email": "alice@example.com", "isActive": true}
// Generated Rust:
// use serde::{Deserialize, Serialize};
//
// #[derive(Debug, Serialize, Deserialize)]
// pub struct Root {
// #[serde(rename = "id")]
// pub id: i64,
// #[serde(rename = "name")]
// pub name: String,
// #[serde(rename = "email")]
// pub email: String,
// #[serde(rename = "isActive")]
// pub is_active: bool,
// }// JSON:
// {"user": {"name": "Alice", "email": null}}
// Generated Rust:
// use serde::{Deserialize, Serialize};
//
// #[derive(Debug, Serialize, Deserialize)]
// pub struct Root {
// #[serde(rename = "user")]
// pub user: User,
// }
//
// #[derive(Debug, Serialize, Deserialize)]
// pub struct User {
// #[serde(rename = "name")]
// pub name: String,
// #[serde(rename = "email")]
// pub email: Option<String>,
// }If a field is never null in your sample, it won't generate as Option<T>. Include examples where the field is absent or null to generate proper Option wrappers.
Rust convention uses snake_case for struct fields. The generator keeps the original JSON key names. Manually convert to snake_case and update #[serde(rename)] attributes for idiomatic Rust code.
The generator targets Rust 2018+ with Serde 1.x. The generated code uses #[serde(rename)] attributes for field name mapping and standard type annotations.
When nullable detection is enabled, fields with null values are typed as Option<T>. Fields without null values are typed directly with no Option wrapper.
No. All conversion happens locally in your browser.
Yes. Generated structs include #[serde(rename)] attributes to map Rust snake_case field names back to original JSON key names automatically.
Creates Rust structs with #[derive(Debug, Serialize, Deserialize)] and #[serde(rename)] attributes.
Automatically detects String, i64, f64, bool, Vec<T>, and Option<T> types from your JSON data.
Creates separate struct definitions for nested objects with proper type references.
All conversion happens locally — your JSON never leaves your device.
JSON to Rust Struct Generator is useful in a variety of scenarios across different workflows:
Generating Rust struct types from API response JSON for type-safe HTTP clients
Creating Serde-compatible structs from sample configuration files and data structures
Rapid prototyping of Rust data models from mock JSON data
Include all possible fields and edge cases (null values, empty arrays) in your sample JSON to generate the most complete struct definitions.
The #[serde(rename)] attributes map Rust field names back to JSON keys. Remove them if your Rust field names already match the JSON keys for cleaner code.
Explore more tools in the JSON workspace:
JSON Formatter
Format, minify, validate, and explore JSON with tree view, JSONPath queries, and multi-format export — the complete JSON workbench.
JSON Compare
Compare two JSON files side by side with real-time diff highlighting.
CSV to JSON Converter
Convert CSV data to JSON format with support for headers and custom delimiters.
YAML to JSON Converter
Convert YAML data to JSON format with support for complex nested structures.
JSON Validator
Validate JSON data and detect syntax errors with detailed error messages and line numbers.
JSON to TOML Converter
Convert JSON data to TOML format for configuration files.