35 个版本

0.12.5 2024 年 7 月 3 日
0.12.3 2024 年 4 月 2 日
0.12.2 2024 年 2 月 21 日
0.10.0 2023 年 10 月 19 日
0.6.1 2022 年 7 月 15 日

#344解析实现

Download history 5061/week @ 2024-04-19 4634/week @ 2024-04-26 5358/week @ 2024-05-03 5355/week @ 2024-05-10 6468/week @ 2024-05-17 4737/week @ 2024-05-24 4933/week @ 2024-05-31 5258/week @ 2024-06-07 5413/week @ 2024-06-14 5404/week @ 2024-06-21 4945/week @ 2024-06-28 5994/week @ 2024-07-05 6197/week @ 2024-07-12 5945/week @ 2024-07-19 6012/week @ 2024-07-26 6011/week @ 2024-08-02

25,271 每月下载量
71 包 (28 直接) 中使用

MIT/Apache

190KB
6K SLoC

严格的 JSON 解析和映射库

CI Crate informations License Documentation

此库提供符合 RFC 8259ECMA-404 的严格 JSON 解析器。它基于 locspan 库构建,以跟踪解析文档中每个 JSON 值的位置。

特性

  • 严格实现 RFC 8259ECMA-404
  • 无栈溢出,您的内存是限制。
  • 由于使用了 json-number 包,数字以词法形式存储,其精度不受限制。
  • 保留重复值。JSON 对象只是一个按定义顺序的条目列表。
  • 尽可能在堆栈上存储字符串,这是通过 smallstr 包实现的。
  • 解析器可配置以接受不完全符合标准的文档。
  • 高度可配置的打印方法。
  • 宏用于静态构建任何值。
  • 启用了 canonicalization 功能的 JSON 规范化方案实现 (RFC 8785)。
  • serde 支持(通过启用 serde 功能)。
  • 经过彻底测试。

使用

use std::fs;
use json_syntax::{Value, Parse, Print};

let filename = "tests/inputs/y_structure_500_nested_arrays.json";
let input = fs::read_to_string(filename).unwrap();
let mut value = Value::parse_str(&input, |span| span).expect("parse error");
println!("value: {}", value.pretty_print());

许可证

根据以下任一项许可:

任选其一。

贡献

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

依赖关系

~5MB
~95K SLoC