## serde_json_merge [build status](https://github.com/romnn/serde_json_merge/actions/workflows/build.yml) [test status](https://github.com/romnn/serde_json_merge/actions/workflows/test.yml) [benchmarks](https://romnn.github.io/serde_json_merge/) [crates.io](https://crates.io/crates/serde_json_merge) [docs.rs](https://docs.rs/serde_json_merge) 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" ``` #### Usage For usage examples, check the [examples](https://github.com/romnn/serde_json_merge/tree/main/examples) and [documentation](https://docs.rs/serde_json_merge). #### Examples ```bash cargo run --example async_fs --features async -- --path ./ cargo run --example sync_fs --features sync,rayon -- --path ./ ``` #### Documentation ```bash RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features ``` #### Linting ```bash cargo feature-combinations clippy --fail-fast --pedantic --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic cargo clippy --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic ``` #### Benchmarking ```bash cargo install cargo-criterion # full benchmark suite cargo criterion --features full ``` Benchmark reports from CI are published are available [here](https://romnn.github.io/serde_json_merge/). #### 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 - write benchmarks - add globbing iter - add iters for keys and values - implement sorting values with indices - implement bfs - add rayon support using par-dfs - write documentation - add examples in the documentation 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