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
412,676次每月下载
在58个crate(直接在11个中)中使用58个crate
19KB
287 行
json-pointer
一个用于解析和使用RFC 6901中规定的JSON指针的crate。与内置在serde_json
中的pointer
方法不同,它处理在使用前验证JSON指针以及URI片段标识符表示。
创建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