#json #json-parser #lexer #data-stream #tool

json-tools

零拷贝的 JSON 词法分析器、过滤器序列化器

11 个版本 (6 个稳定版)

1.1.3 2024年7月25日
1.1.2 2020年2月1日
1.1.0 2019年2月8日
1.0.1 2017年1月2日
0.0.1 2015年5月6日

#635解析器实现

Download history 71/week @ 2024-04-26 152/week @ 2024-05-03 105/week @ 2024-05-10 120/week @ 2024-05-17 92/week @ 2024-05-24 88/week @ 2024-05-31 61/week @ 2024-06-07 145/week @ 2024-06-14 139/week @ 2024-06-21 62/week @ 2024-06-28 121/week @ 2024-07-05 82/week @ 2024-07-12 193/week @ 2024-07-19 127/week @ 2024-07-26 46/week @ 2024-08-02 33/week @ 2024-08-09

每月413次下载
用于 5 个crate (3 个直接使用)

MIT/Apache

30KB
550

Crates.io Rust

此库包含一组工具,用于帮助与 JSON 编码数据交互。

特性

  • 简单的 JSON 词法分析器
    • 虽然无意实现所有功能,但它能够将 ASCII JSON 数据流分割成它们的词法符号,并跟踪构成它们的字符范围。
    • 便于编写高级解析器和过滤器
  • 键值过滤器
    • 一个实用程序,用于过滤属于具有给定类型值的键的词法符号。这使得重新组装 JSON 数据流并剥离其 null 值变得容易,例如。
  • TokenReader
    • 一个适配器,用于将 Tokens 流转换为字节流,支持 Read 特性。
    • 使用它将过滤和/或操作过的符号流转换回字节流。
    • 配置输出样式,以实现如格式化输出或删除所有空白字符的效果。

用法

将此添加到您的 Cargo.toml

[dependencies]
json-tools = "*"

将此添加到您的库 ...

use json_tools::BufferType;
use json_tools::Lexer;

for token in Lexer::new(r#"{ "face": "😂" }"#.bytes(), BufferType::Span) {
	println!("{:?}", token);
}

动机

由于该库是为了解决 serde 中缺失的功能而创建的,因此它可能永远不会比最初提到的两个功能更大。

手册

使用 cargo test 运行测试,并使用 cargo bench 运行基准测试(在稳定版上工作)。

许可证

根据以下任一许可证授权

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可中定义的,您有意提交供作品包含的贡献,应以上述方式双授权,不附加任何额外条款或条件。

无运行时依赖