Expand description
Derive macro for generating JSON Schema from Rust types.
This crate provides a #[derive(JsonSchema)]
macro that generates a JSON Schema
for your types. It supports custom schema attributes via #[json_schema(...)]
and optionally integrates with common serde
attributes when the serde-compat
feature is enabled.
§Example
use json_schema_derive::JsonSchema;
#[derive(JsonSchema)]
struct User {
#[json_schema(comment = "User's name", minLength = 2)]
name: String,
/// User's age
age: u32,
tags: Vec<String>,
}
let schema = User::json_schema();
§Features
serde-compat
: Enables compatibility with serde attributes for schema generation
§Serde Compatibility
When the serde-compat
feature is enabled, the following serde
attributes are supported:
#[serde(skip)]
– Omits the field from the schema#[serde(rename = "new_name")]
– Renames the field in the schema#[serde(flatten)]
– Inlines nested struct fields#[serde(tag = "...")]
– Supports internally tagged enums
#[derive(JsonSchema)]
#[serde(tag = "type")]
enum Event {
Login { user: String },
Logout,
}
Traits§
- Json
Schema - Trait for generating JSON Schema from a type.