29个版本 (重大变更)

0.23.0 2023年10月27日
0.22.1 2023年7月27日
0.21.1 2023年4月28日
0.21.0 2022年8月5日
0.12.2 2020年6月7日

#1 in #ast-parser

Download history 15150/week @ 2024-04-08 13579/week @ 2024-04-15 10900/week @ 2024-04-22 7993/week @ 2024-04-29 12997/week @ 2024-05-06 13726/week @ 2024-05-13 9897/week @ 2024-05-20 14027/week @ 2024-05-27 11342/week @ 2024-06-03 19669/week @ 2024-06-10 21236/week @ 2024-06-17 13304/week @ 2024-06-24 24680/week @ 2024-07-01 30339/week @ 2024-07-08 30058/week @ 2024-07-15 19425/week @ 2024-07-22

每月106,182次下载
用于 50个 crate (26 个直接使用)

MIT 许可证

71KB
2K SLoC

jsonc-parser

使用Rust实现的JSONC解析器。

示例

转换为简单的JsonValue

use jsonc_parser::parse_to_value;

let json_value = parse_to_value(r#"{ "test": 5 } // test"#, &Default::default())?;
// check the json_value here

或AST

use jsonc_parser::parse_to_ast;
use jsonc_parser::CollectOptions;

let parse_result = parse_to_ast(r#"{ "test": 5 } // test"#, &CollectOptions {
    comments: true, // include comments in result
    tokens: true, // include tokens in result
}, &Default::default())?;
// ...inspect parse_result for value, tokens, and comments here...

Serde

如果您按照以下方式启用"serde"功能

# in Cargo.toml
jsonc-parser = { version = "...", features = ["serde"] }

然后您可以使用parse_to_serde_value函数获取一个serde_json::Value

use jsonc_parser::parse_to_serde_value;

let json_value = parse_to_serde_value(r#"{ "test": 5 } // test"#, &Default::default())?;

或者,使用parse_to_ast然后调用.into() (例如 let value: serde_json::Value = ast.into();).

严格按JSON解析

提供ParseOptions并将所有选项设置为false

use jsonc_parser::parse_to_value;
use jsonc_parser::ParseOptions;

let json_value = parse_to_value(text, &ParseOptions {
  allow_comments: false,
  allow_loose_object_property_names: false,
  allow_trailing_commas: false,
})?;

依赖关系

~0–440KB