serde_json_merge 0.0.3

Merge, index, iterate, and sort a serde_json::Value (recursively)
Documentation

serde_json_merge

Merge, index, iterate, and sort a `serde_json::Value`` (recursively).

This library supports both in-place recursive (can stack overflow) and allocating iterative merging.

[dependencies]
serde_json_merge = "0"

Usage

For usage examples, check the examples and documentation.

Examples

cargo run --example async_fs --features async -- --path ./
cargo run --example sync_fs --features sync,rayon -- --path ./

Documentation

RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features

Linting

cargo clippy --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic

Benchmarking

cargo install cargo-criterion
# full benchmark suite
cargo criterion --features full
# sync benchmarks only
cargo criterion --features sync -- sync
# dfs benchmarks only
cargo criterion --features full -- dfs

Benchmark reports from CI are published are available here.

Acknowledgements

After i wrote this crate for another project and decided to publish it, I found (json_value_merge)[https://crates.io/crates/json_value_merge].

Looking through it, I added merge_index inspired by their merge_in API.

TODO

  • do not expose wrapper for Value but use extension
  • add depth parameter to recursive merge
  • add custom comparator for merging
  • add examples in the documentation
  • write documentation
  • write benchmarks