sppparse

Crates.iosppparse
lib.rssppparse
version0.1.4
sourcesrc
created_at2021-01-18 16:56:02.360373
updated_at2021-05-02 20:45:18.202232
descriptionSparsed pointer parser for JSON/YAML
homepage
repositoryhttps://github.com/basiliqio/sppparse
max_upload_size
id343577
size118,701
Francis Le Roy (GrandChaman)

documentation

README

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"
Commit count: 91

cargo fmt