3 个稳定版本
3.1.0 | 2024年7月22日 |
---|---|
3.0.1 | 2024年2月12日 |
3.0.0 | 2023年3月16日 |
#1522 in 解析器实现
106 每月下载量
47KB
1K SLoC
Momoa JSON
由 Nicholas C. Zakas 提供
如果您觉得这个项目有用,请考虑通过 捐赠 支持我的工作。
关于
Momoa 是一个通用的 JSON 工具包,包含
- A tokenizer that allows you to separate a JSON string into its component parts.
- A ECMA-404 compliant parser that produces an abstract syntax tree (AST) representing everything inside of a JSON string.
背景
当您不仅想知道 JSON 解析的结果,还想了解原始 JSON 字符串中包含的具体内容时,Momoa 这样的工具就派上用场了。
用法
解析
有两种解析方法:一种用于 JSON,另一种用于 JSON-C。
要将 JSON 字符串解析为 AST,请使用 json::parse()
函数
use momoa::ast::*;
use momoa::json;
fn do_parse(code) -> Node {
let ast = json::parse(code).unwrap();
// do something with ast
ast
}
要将 JSON-C 字符串解析为 AST,请使用 jsonc::parse()
函数
use momoa::ast::*;
use momoa::jsonc;
fn do_parse(code) -> Node {
let ast = jsonc::parse(code).unwrap();
// do something with ast
ast
}
分词
要使用字符串生成 JSON 标记,请使用 json::tokenize()
函数
use momoa::*;
fn do_parse(code) -> Vec<Token> {
let result = json::tokenize(code).unwrap();
// do something with ast
result
}
要使用字符串生成 JSON 标记,请使用 jsonc::tokenize()
函数
use momoa::*;
fn do_parse(code) -> Vec<Token> {
let result = jsonc::tokenize(code).unwrap();
// do something with ast
result
}
开发
要为 Momoa 工作,您需要
请通过访问链接并按照说明安装来确保这两个软件都已安装。
现在您可以克隆仓库了
git clone https://github.com/humanwhocodes/momoa.git
然后,进入目录并安装依赖项
cd momoa/rust
cargo build
之后,您可以通过以下方式运行测试
cargo test
许可证
Apache 2.0
常见问题解答
"Momoa" 是什么意思?
Momoa是美国演员Jason Momoa的姓氏。因为"JSON"发音与"Jason"相似,我想起这个名字。最明显的选择是和《杰森和亚尔古英雄》(Jason and the Argonauts)有关,因为这部电影在JSON规范中直接提到。然而,"Argo"和"Argonaut"已经被用于开源项目。我在网上搜索"Jason"时,Jason Momoa是第一个出现的结果。他总是扮演硬汉角色,这似乎很合适。
为什么要在JSON中支持注释?
有许多程序允许在JSON文件中使用C样式的注释,最著名的是Visual Studio Code的配置文件。由于似乎有这种功能的需求,我决定直接添加它。
依赖项
~1.4–2.6MB
~49K SLoC