Crate schemafy[−][src]
Expand description
This is a Rust crate which can take a json schema (draft
4) and generate Rust types which are
serializable with serde. No checking such as
min_value
are done but instead only the structure of the schema
is followed as closely as possible.
As a schema could be arbitrarily complex this crate makes no guarantee that it can generate good types or even any types at all for a given schema but the crate does manage to bootstrap itself which is kind of cool.
Example
Generated types for VS Codes debug server protocol: https://docs.rs/debugserver-types
Usage
Rust types can be generated by passing a path to a JSON schema to the [schemafy
]
procedural macro.
extern crate serde; extern crate schemafy_core; extern crate serde_json; use serde::{Serialize, Deserialize}; schemafy::schemafy!( "tests/nested.json" ); schemafy::schemafy!( root: Schema // Optional name for the root type (if one exists) "schemafy_lib/src/schema.json" ); fn main() -> Result<(), Box<dyn std::error::Error>> { let nested: Defnested = serde_json::from_str(r#"{ "append": "abc" }"#)?; assert_eq!(nested.append, Some("abc".to_string())); Ok(()) }
Macros
schemafy | Generate Rust types from a JSON schema. |