A work-in-progress tool to diff changes between JSON schemas. A lot of JSON schema features are not implemented and therefore ignored, such as:
required
patternProperties
(entirely ignored)const
(changes from {"const": "foo"}
to {"type": "string"}
are not detected)Use this tool as a best-effort to find obviously breaking changes in CI, but not for much more.
This crate is used with draft-07 but even that is work in progress.
bash
cargo run --features=build-binary -- \
schema-old.json \
schema-new.json
```rust use jsonschemadiff::*;
let lhs = serdejson::json! {{ "type": "string", }}; let rhs = serdejson::json! {{ "type": "boolean", }};
asserteq!( jsonschemadiff::diff(lhs, rhs).unwrap(), vec![ Change { path: "".toowned(), change: ChangeKind::TypeRemove { removed: JsonSchemaType::String } }, Change { path: "".to_owned(), change: ChangeKind::TypeAdd { added: JsonSchemaType::Boolean } } ] ); ```
Licensed under Apache 2.0