5 unstable releases
Uses new Rust 2024
| 0.43.2 | Jan 23, 2026 |
|---|---|
| 0.43.1 | Jan 23, 2026 |
| 0.43.0 | Jan 22, 2026 |
| 0.42.0 | Jan 6, 2026 |
| 0.41.0 | Dec 31, 2025 |
#2700 in Encoding
204 downloads per month
1.5MB
27K
SLoC
facet-json-schema
facet-json-schema
Generate JSON Schema from facet type metadata.
This crate uses facet's reflection capabilities to generate JSON Schema definitions
from any type that implements Facet. The generated schemas can be used for:
- API documentation (OpenAPI/Swagger)
- Runtime validation
- Cross-language type generation
- Editor autocompletion
Usage
use facet::Facet;
use facet_json_schema::to_schema;
#[derive(Facet)]
struct User {
name: String,
age: u32,
email: Option<String>,
}
let schema = to_schema::<User>();
println!("{}", schema);
Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
"email": { "type": "string" }
},
"required": ["name", "age"]
}
Sponsors
Thanks to all individual sponsors:
...along with corporate sponsors:
...without whom this work could not exist.
Special thanks
The facet logo was drawn by Misiasart.
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~3MB
~53K SLoC