5 个版本
0.2.2 | 2021年2月25日 |
---|---|
0.2.1 | 2021年2月25日 |
0.1.2 | 2021年2月22日 |
0.1.1 | 2021年2月22日 |
0.1.0 | 2021年2月22日 |
2989 在 解析器实现 中
588 每月下载量
3MB
1.5K SLoC
pjson.rs
Rust 的 JSON 流解析器。
这是由 pjson Go 库移植过来的。
它设计得非常快速,并且不进行任何分配。
示例
打印 JSON 文档中的所有字符串值。
fn main() {
let json = br#"
{
"name": {"first": "Tom", "last": "Anderson"},
"age":37,
"children": ["Sara","Alex","Jack"],
"fav.movie": "Deer Hunter",
"friends": [
{"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
]
}
"#;
pjson::parse(json, 0, |start: usize, end: usize, info: usize) i64 {
if info&(pjson::STRING|pjson::VALUE) == pjson::STRING|pjson::VALUE {
let el = String::from_utf8(json[start..end].to_vec()).unwrap();
println!("{}", el);
}
1
});
}
// output:
// "Tom"
// "Anderson"
// "Sara"
// "Alex"
// "Jack"
// "Deer Hunter"
// "Dale"
// "Murphy"
// "ig"
// "fb"
// "tw"
// "Roger"
// "Craig"
// "fb"
// "tw"
// "Jane"
// "Murphy"
// "ig"
// "tw"