# json-parser **Repository Path**: jeffwang78/json-parser ## Basic Information - **Project Name**: json-parser - **Description**: Json Parser in C++ - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-19 - **Last Updated**: 2022-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Json-parser #### 介绍 Json Parser in C++ #### 软件架构 Json syntax diagram: ```mermaid graph LR r(JSON root) obj[ Object ] objs(("start {")) obje(("end }")) p[Property + ] obj --> objs --> p p[Property + ] ps(Properties *) --> obje p --> ps ps -.-> c1(("comma ," )) --> p p -.-> str[string] --> c2(("colon :")) --> item( item ) item -.-> obj item -.-> array[Array] item -.-> str item -.-> num[number] items[Items] -.-> c3(("comma ,")) --> item array -.-> as(("start [")) --> item --> items --> ae(("end ]")) item -.-> null(null) r --> obj r --> array ``` 主要文件: * JsonElement.cpp: 实现 Json元素 接口及 简单实现。 * JsonElement * JsonValue * JsonNumber * JsonString * JsonParent * JsonObject * JsonArray * JsonProperty * JsonNull * JsonParser.cpp: 实现语法结构定义; 实现String, number解析。实现语法解析。 * 调用关系大致为: * JsonParser::parse (string) * match: object | Array * matchToken : { * create Element by type: new JsonObject () ... * main.cpp: 测试入口。 #### 使用说明 ``` $ git clone ... $ cd json-parser/ $ make clean all $ ./build/jsonparser test.json ``` #### 存在问题 - ParserContext 可以提取成接口并实现 文件、流形式的 context。 - ParserContext 需要增加一个 setError 函数 来接纳解析中的错误信息。 - 转义字符只支持:\\t \\n \\r \\\\ \\" \\' 。 - 没有处理 *续行符* 。