3 个稳定版本

3.1.0 2024年7月22日
3.0.1 2024年2月12日
3.0.0 2023年3月16日

#1522 in 解析器实现

Download history 87/week @ 2024-07-19 19/week @ 2024-07-26

106 每月下载量

Apache-2.0

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