Crate jtd_infer[−][src]
Infers JSON Type Definition schemas from example inputs.
JSON Type Definition, aka RFC 8927, is an easy-to-learn, standardized way to define a schema for JSON data. You can use JSON Typedef to portably validate data across programming languages, create dummy data, generate code, and more.
This Rust crate can generate a JSON Typedef schema from example data. If you
are looking to use this package as a CLI tool, see this crate's
README. The remainder of
these docs are focused on this crate as a Rust library, and so focuses on
the Rust API for using jtd_fuzz
.
Quick start
Here's how you can use this crate to infer a schema:
use serde_json::json; use jtd_infer::{Inferrer, Hints, HintSet, NumType}; let mut inferrer = Inferrer::new(Hints::new( NumType::Uint8, HintSet::new(vec![]), HintSet::new(vec![]), HintSet::new(vec![]), )); inferrer = inferrer.infer(json!({ "foo": true, "bar": "xxx" })); inferrer = inferrer.infer(json!({ "foo": false, "bar": null, "baz": 5 })); let inference = inferrer.into_schema(); assert_eq!( json!({ "properties": { "foo": { "type": "boolean" }, "bar": { "type": "string", "nullable": true }, }, "optionalProperties": { "baz": { "type": "uint8" }, }, }), serde_json::to_value(inference.into_serde_schema()).unwrap(), )
Structs
HintSet | A set of paths to parts of the input that are subject to a hint in
|
Hints | Hints for |
Inferrer | Keeps track of a sequence of example inputs, and can be converted into an inferred schema. |
Enums
NumType | A type of number to infer by default. |