Merge

Trait Merge 

Source
pub trait Merge {
    // Required methods
    fn merge(&mut self, new_json_value: Value);
    fn merge_in(&mut self, json_pointer: &str, new_json_value: Value);
}
Expand description

Trait used to merge Json Values

Required Methods§

Source

fn merge(&mut self, new_json_value: Value)

Method use to merge two Json Values : ValueA <- ValueB.

Source

fn merge_in(&mut self, json_pointer: &str, new_json_value: Value)

Merge a new value in specific json pointer.

Implementations on Foreign Types§

Source§

impl Merge for Value

Source§

fn merge(&mut self, new_json_value: Value)

§Examples: Merge two array together.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut array1: Value = serde_json::from_str(r#"["a","b"]"#).unwrap();
let array2: Value = serde_json::from_str(r#"["b","c"]"#).unwrap();
array1.merge(array2);
assert_eq!(r#"["a","b","c"]"#, array1.to_string());
§Examples: Merge two objects together.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut object1: Value = serde_json::from_str(r#"{"value1":"a","value2":"b"}"#).unwrap();
let object2: Value = serde_json::from_str(r#"{"value1":"a","value2":"c","value3":"d"}"#).unwrap();
object1.merge(object2);
assert_eq!(r#"{"value1":"a","value2":"c","value3":"d"}"#,object1.to_string());
§Examples: Merge an object into an array.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut array: Value = serde_json::from_str(r#"[]"#).unwrap();
let object: Value = serde_json::from_str(r#"{"field1":"value1"}"#).unwrap();
array.merge(object);
assert_eq!(r#"[{"field1":"value1"}]"#,array.to_string());
§Examples: Merge an array into an object.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut object: Value = serde_json::from_str(r#"{"field1":"value1"}"#).unwrap();
let array: Value = serde_json::from_str(r#"["value2","value3"]"#).unwrap();
object.merge(array);
assert_eq!(r#"["value2","value3"]"#,object.to_string());
Source§

fn merge_in(&mut self, json_pointer: &str, new_json_value: Value)

§Examples: Merge an array in an object in a specific position.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut object: Value = serde_json::from_str(r#"{"my_array":[{"a":"t"}]}"#).unwrap();
let array: Value = serde_json::from_str(r#"["b","c"]"#).unwrap();
object.merge_in("/my_array", array.clone());
assert_eq!(r#"{"my_array":[{"a":"t"},"b","c"]}"#, object.to_string());
§Examples: Merge two objects together in a specific position.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut object1: Value = serde_json::from_str(r#"{"my_array":[{"a":"t"}]}"#).unwrap();
let object2: Value = serde_json::from_str(r#"{"b":"c"}"#).unwrap();
object1.merge_in("/my_array/0/a", object2.clone());
assert_eq!(r#"{"my_array":[{"a":{"b":"c"}}]}"#, object1.to_string());
§Examples: Merge an object in an array in a specific position.
use serde_json::Value;
use north_common::utils::serde_utils::Merge;

let mut json_value: Value = serde_json::from_str(r#"[{"array1":[{"field":"value1"}]}]"#).unwrap();
json_value.merge_in("/other_field", Value::String("value".to_string()));
assert_eq!(r#"[{"array1":[{"field":"value1"}]},{"other_field":"value"}]"#,json_value.to_string());

Implementors§