Give an interface to merge two json_serde::Value together.
Toml
[dependencies]
json_value_merge = "0.2"
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() ); } ```
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.