Merge, index, iterate, and sort a serde_json::Value
(recursively).
This library supports in-place merging and sorting using DFS and BFS traversal unline most implementations out there that use recursion and can stack overflow.
toml
[dependencies]
serde_json_merge = "0"
For usage examples, check the examples and documentation.
bash
cargo run --example async_fs --features async -- --path ./
cargo run --example sync_fs --features sync,rayon -- --path ./
bash
RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features
bash
cargo feature-combinations clippy --fail-fast --pedantic --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic
cargo clippy --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic
```bash cargo install cargo-criterion
cargo criterion --features full ```
Benchmark reports from CI are published are available here.
After i wrote this crate for another project and decided to publish it, I found jsonvaluemerge.
Looking through it, I added merge_index
inspired by their merge_in
API.
add globbing iter
add iters for keys and values
DONE: - inline everything - do we really need the any type? so useless right now :( - maybe use them for the very precise type? - add custom comparator for merging - split the sorting into extra module - implement unstable sorting - add feature gates for sort and merge - add few more tests for kind and so on - partial eq can be written top level - add limit to dfs - do not expose wrapper for Value but use extension - add depth parameter to recursive merge