1.1 KiB
1.1 KiB
title | nav_order | has_children | has_toc | permalink |
---|---|---|---|---|
Deriving JsonSchema | 3 | true | false | /deriving/ |
Deriving JsonSchema
The most important trait in Schemars is JsonSchema
, and the most important function of that trait is json_schema(...)
which returns a JSON schema describing the type. Implementing this manually on many types would be slow and error-prone, so Schemars includes a derive macro which can implement that trait for you. Any derived implementation of JsonSchema
should create a schema that describes the JSON representation of the type if it were to be serialized by serde_json.
Usually, all you need to do to use it is to add a #[derive(JsonSchema)]
attribute to your type:
use schemars::{JsonSchema, schema_for};
#[derive(JsonSchema, Debug)]
struct Point {
x: i32,
y: i32,
}
fn main() {
let schema = schema_for!(Point);
let serialized = serde_json::to_string(&schema).unwrap();
println!("{}", serialized);
}