jsonvaluemerge

Linter Actions Status semantic-release

Give an interface to merge two json_serde::Value together.

Installation

Toml [dependencies] json_value_merge = "0.2"

Usage

Merge two arrays:

```rust extern crate jsonvaluemerge;

use jsonvaluemerge::Merge;

{ let mut firstjsonvalue: Value = serdejson::fromstr(r#"["a","b"]"#).unwrap(); let secoundjsonvalue: Value = serdejson::fromstr(r#"["b","c"]"#).unwrap(); firstjsonvalue.merge(secoundjsonvalue); asserteq!(r#"["a","b","c"]"#, firstjsonvalue.tostring()); } ```

Merge two objects:

```rust extern crate jsonvaluemerge;

use jsonvaluemerge::Merge;

{ let mut firstjsonvalue: Value = serdejson::fromstr(r#"[{"value":"a"},{"value":"b"}]"#).unwrap(); let secoundjsonvalue: Value = serdejson::fromstr(r#"[{"value":"b"},{"value":"c"}]"#).unwrap(); firstjsonvalue.merge(secoundjsonvalue); asserteq!( r#"[{"value":"a"},{"value":"b"},{"value":"c"}]"#, firstjsonvalue.tostring() ); } ```

Merge two arrays in a specifique position:

```rust extern crate jsonvaluemerge;

use jsonvaluemerge::Merge;

{ let mut valuea: Value = serdejson::fromstr(r#"{"myarray":[{"a":"t"}]}"#).unwrap(); let valueb: Value = serdejson::fromstr(r#"["b","c"]"#).unwrap(); valuea.mergein("/myarray", valueb.clone()); asserteq!(r#"{"myarray":[{"a":"t"},"b","c"]}"#, valuea.to_string()); } ```

Merge two objects in a specifique position:

```rust extern crate jsonvaluemerge;

use jsonvaluemerge::Merge;

{ let mut valuea: Value = serdejson::fromstr(r#"{"myarray":[{"a":"t"}]}"#).unwrap(); let valueb: Value = serdejson::fromstr(r#"{"b":"c"}"#).unwrap(); valuea.mergein("/myarray/0", valueb.clone()); asserteq!(r#"{"myarray":[{"a":"t","b":"c"}]}"#, valuea.to_string()); } ```

Build new object:

```rust extern crate jsonvaluemerge;

use jsonvaluemerge::Merge;

{ let mut object: Value = Value::default(); object.mergein("/field", Value::String("value".tostring())); object.mergein("/object", Value::Object(Map::default())); object.mergein("/array", Value::Array(Vec::default())); asserteq!( r#"{"array":[],"field":"value","object":{}}"#, object.tostring() ); } ```

Useful link

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

Apache MIT