5 个版本
0.1.4 | 2021年5月2日 |
---|---|
0.1.3 | 2021年4月29日 |
0.1.2 | 2021年1月28日 |
0.1.1 | 2021年1月20日 |
0.1.0 | 2021年1月18日 |
#2679 in 解析器实现
在 oapi 中使用
96KB
2.5K SLoC
Sppparse (稀疏指针解析器)
简介
现代 JSON
/YAML
通常使用 JSON Pointer。这个crate旨在简化它们的使用。
基于 serde 构建,这个库允许以通用方式读取和修改包含 $ref
的文档。
特性
以下特性可用:
url
: 添加对url::Url
的支持semver
: 添加对semver::Version
的支持
示例
#[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"
依赖项
~4–5MB
~109K SLoC