Link Search Menu Expand Document

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);
}