jsonvaluesearch

Actions Status

Give an interface to search values into json_serde::Value.

Installation

Toml [dependencies] json_value_search = "0.1"

Usage

```rust extern crate jsonvaluesearch;

use jsonvaluesearch::Search; use serde_json::Value;

let value: Value = serdejson::fromstr(r#"{"fieldA":[{"field.B":"valueB"},{"fieldC":"valueC"}]}"#).unwrap();

let valueexpectedwithwildcard: Value = serdejson::fromstr(r#"[{"field.B":"valueB"},{"fieldC":"valueC"}]"#).unwrap(); asserteq!(Some(valueexpectedwithwildcard),value.clone().search(r#"/field_A/*"#));

let valueexpectedforspecificfield: Value = serdejson::fromstr(r#"["valueB"]"#).unwrap(); asserteq!(Some(valueexpectedforspecificfield),value.clone().search(r#"/field_A/*/field.B"#));

let valueexpectedforspecificindex: Value = serdejson::fromstr(r#"{"field.B":"valueB"}"#).unwrap(); asserteq!(Some(valueexpectedforspecificindex),value.clone().search(r#"/field_A/0"#));

let valueexpectedwithregex: Value = serdejson::fromstr(r#"["valueB","valueC"]"#).unwrap(); asserteq!(Some(valueexpectedwithregex),value.clone().search(r#"/fieldA/*/field.+"#)); ```

Bench

``` Bench jsonvalue.search(/field/otherfield).
time: [33.771 us 33.857 us 33.950 us] change: [-13.330% -10.288% -7.2919%] (p = 0.00 < 0.05) Found 9 outliers among 100 measurements (9.00%) 5 (5.00%) high mild 4 (4.00%) high severe

Bench jsonvalue.search(/field/*/otherfield).
time: [81.117 us 84.117 us 87.467 us] change: [+3.4453% +6.8087% +10.315%] (p = 0.00 < 0.05) Found 10 outliers among 100 measurements (10.00%) 9 (9.00%) high mild 1 (1.00%) high severe

Bench jsonvalue.search(/field/1/otherfield).
time: [45.043 us 46.249 us 47.626 us] change: [-3.0050% +1.0537% +4.8742%] (p = 0.61 > 0.05) Found 7 outliers among 100 measurements (7.00%) 2 (2.00%) high mild 5 (5.00%) high severe

Bench json_value.search(/field/1).
time: [23.609 us 23.916 us 24.354 us] change: [-1.9539% -0.8737% +0.3058%] (p = 0.13 > 0.05) Found 6 outliers among 100 measurements (6.00%) 5 (5.00%) high mild 1 (1.00%) high severe

Bench json_value.search(/field/*/regex).
time: [127.65 us 130.88 us 134.64 us] change: [+6.0142% +8.2959% +10.611%] (p = 0.00 < 0.05) Found 14 outliers among 100 measurements (14.00%) 10 (10.00%) high mild 4 (4.00%) high severe ```

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