Skip to content

一个使用typescript编写的简单的json解析器

Notifications You must be signed in to change notification settings

DoYoungDo/json_compiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

json_compiler README.md

项目介绍

这是一个用于解析和转换 JSON 数据的编译器项目。它通过词法分析、语法分析和转换处理,将 JSON 输入转换为 JavaScript 对象表示,也可以将 JavaScript 对象重新转换为 JSON 字符串。

功能说明

  • 词法分析 (tokenizer): 将输入字符串解析为词法单元 (tokens)。
  • 语法分析 (parser): 从词法单元构建抽象语法树 (AST)。
  • 转换 (transformer): 遍历 AST 生成最终的 JavaScript 对象。
  • 导出方法 (parse): 将上述所有步骤串联,提供对外的 JSON 解析接口。
  • 导出方法 (stringify): 将 JavaScript 对象转换回 JSON 字符串(当前未实现)。
  • 测试方法 (testParse): 提供对解析器的测试用例,包括正常和异常的 JSON 输入。

使用说明

安装

该项目使用 TypeScript,确保您已安装 TypeScriptNode.js,然后克隆仓库并运行编译:

npm install -g typescript
git clone https://gitee.com/DoyoungDo/json_compiler.git
cd json_compiler
tsc

运行

使用 node 运行编译后的代码:

node index.js

示例

该代码包含如下测试用例,以验证 JSON 解析的正确性:

const stdJson = `{
  "null": null,
  "int": 123,
  "float": 12.3,
  "str": "123",
  "arr": [123, 12.3,"123"],
  "obj": {"key":"value"}
}`;

testParse(stdJson);

API

  • parse(input: string): any - 解析 JSON 字符串为 JavaScript 对象。
  • stringify(value: any): string - 将 JavaScript 对象转换为 JSON 字符串(当前为空实现)。

测试

项目包含多种测试用例:

  • 标准 JSON(stdJson, stdJsonArr)。
  • 错误格式 JSON(errJson, errJson1, errJson2, errJson3, errJson4)。
  • 简单 JSON(simpleJson)。

测试函数将输出输入、解析结果或捕获的异常。

贡献者指南

欢迎贡献代码和改进功能,尤其是完成 stringify 方法。请确保提交的代码遵循项目代码风格,并通过已有的测试用例。

许可证

该项目遵循开源许可证(具体许可证信息未在代码中提供,请查看项目根目录的 LICENSE 文件)。

About

一个使用typescript编写的简单的json解析器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published