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解析器实现

Download history 2/week @ 2024-04-22 14/week @ 2024-06-03 48/week @ 2024-06-10 1/week @ 2024-06-17 5/week @ 2024-06-24 53/week @ 2024-07-01 185/week @ 2024-07-08 196/week @ 2024-07-15 154/week @ 2024-07-22

588 每月下载量

MIT 许可证

3MB
1.5K SLoC

pjson.rs

license crates.io version documentation

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"

无运行时依赖