5 releases

0.1.4 May 2, 2021
0.1.3 Apr 29, 2021
0.1.2 Jan 28, 2021
0.1.1 Jan 20, 2021
0.1.0 Jan 18, 2021

#78 in #sparse


Used in oapi

MIT/Apache

96KB
2.5K SLoC

Sppparse (Sparsed Pointer Parser)

Introduction

Modern JSON/YAML tends to use JSON Pointer. This crate aims to facilitate their use.

Built on top of serde, this library allows a generic way to read and modify documents containing $ref.

Features

The following features are available :

  • url: Add support for url::Url
  • semver: Add support for semver::Version

Example

#[derive(Debug, Deserialize, Serialize, Sparsable)]
struct ObjectExampleParsed {
    hello: String,
    obj: HashMap<String, SparseSelector<String>>,
}

fn main() {
    let json_value = json!({
        "hello": "world",
        "obj": {
            "key1": {
                "$ref": "#/hello"
            }
        }
    });
    let parsed_obj: SparseRoot<ObjectExampleParsed> =
        SparseRoot::new_from_value(json_value, PathBuf::from("hello.json"), vec![]).unwrap();

    println!(
        "{}",
        parsed_obj
            .root_get()
            .unwrap()
            .obj
            .get("key1")
            .unwrap()
            .get()
            .expect("the dereferenced pointer")
    );
}
// Prints "world"

Dependencies

~3–4.5MB
~91K SLoC