7个版本

0.3.4 2020年9月5日
0.3.3 2020年9月5日
0.3.2 2017年6月1日
0.3.1 2017年5月30日
0.1.0 2017年5月26日

编码中排名#402

Download history • Rust 包仓库 61475/week @ 2024-03-14 • Rust 包仓库 64502/week @ 2024-03-21 • Rust 包仓库 69827/week @ 2024-03-28 • Rust 包仓库 76100/week @ 2024-04-04 • Rust 包仓库 80104/week @ 2024-04-11 • Rust 包仓库 83388/week @ 2024-04-18 • Rust 包仓库 82484/week @ 2024-04-25 • Rust 包仓库 89872/week @ 2024-05-02 • Rust 包仓库 85921/week @ 2024-05-09 • Rust 包仓库 84692/week @ 2024-05-16 • Rust 包仓库 92610/week @ 2024-05-23 • Rust 包仓库 110362/week @ 2024-05-30 • Rust 包仓库 102425/week @ 2024-06-06 • Rust 包仓库 98524/week @ 2024-06-13 • Rust 包仓库 89529/week @ 2024-06-20 • Rust 包仓库 96529/week @ 2024-06-27 • Rust 包仓库

412,676次每月下载
58个crate(直接在11个中)中使用58个crate

MIT许可证

19KB
287

json-pointer

一个用于解析和使用RFC 6901中规定的JSON指针的crate。与内置在serde_json中的pointer方法不同,它处理在使用前验证JSON指针以及URI片段标识符表示。

pipeline status crates.io Documentation

创建JSON指针

JSON指针可以用字面量[&str]创建,或从String解析。

let from_strs = JsonPointer::new([
    "foo",
    "bar",
]);
let parsed = "/foo/bar".parse::<JsonPointer<_, _>>().unwrap();

assert_eq!(from_strs.to_string(), parsed.to_string());
}

使用JSON指针

JsonPointer类型提供了.get().get_mut(),分别用于获取适当的值的引用和可变引用。

let ptr = "/foo/bar".parse::<JsonPointer<_, _>>().unwrap();

let document = json!({
    "foo": {
        "bar": 0,
        "baz": 1,
    },
    "quux": "xyzzy"
});

let indexed = ptr.get(&document).unwrap();

assert_eq!(indexed, &json!(0));

URI片段标识符表示

JSON指针可以嵌入URI的片段部分。这也是为什么大多数JSON指针库需要在JSON指针的开头使用#字符的原因。crate将检测前导的#作为解析URI片段标识符表示的指示器。请注意,这意味着这个crate不支持解析完整的URI。

let str_ptr = "/f%o".parse::<JsonPointer<_, _>>().unwrap();
let uri_ptr = "#/f%25o".parse::<JsonPointer<_, _>>().unwrap();

assert_eq!(str_ptr, uri_ptr);

依赖

~355–760KB
~17K SLoC