这是一个简化的 C++ JSON 解析库,通过这个项目,可以学习:
- C++ 项目的标准目录结构
- 头文件与源文件的分离
- 面向对象设计
- 递归下降解析器的实现
- 现代 C++ 特性(智能指针、移动语义等)
- CMake 构建系统
- 单元测试
json/
├── CMakeLists.txt # CMake 构建配置
├── README.md # 项目说明文档
├── include/ # 公共头文件目录
│ └── json/
│ ├── json.h # JSON 值类型定义
│ ├── parser.h # JSON 解析器
│ └── serializer.h # JSON 序列化器
├── src/ # 源文件目录
│ ├── json.cpp # JSON 值实现
│ ├── parser.cpp # 解析器实现
│ └── serializer.cpp # 序列化器实现
├── examples/ # 示例代码
│ ├── basic_usage.cpp # 基本使用示例
│ └── CMakeLists.txt # 示例构建配置
├── tests/ # 单元测试
│ ├── test_json.cpp # JSON 值测试
│ ├── test_parser.cpp # 解析器测试
│ └── CMakeLists.txt # 测试构建配置
└── docs/ # 文档目录
└── design.md # 设计文档
- ✅ 支持 JSON 基本类型:null, bool, number, string
- ✅ 支持 JSON 复合类型:array, object
- ✅ JSON 字符串解析
- ✅ JSON 序列化输出
- ✅ 友好的 C++ API
mkdir build
cd build
cmake ..
make#include "json/json.h"
#include "json/parser.h"
#include "json/serializer.h"
#include <iostream>
int main() {
// 解析 JSON 字符串
std::string json_str = R"({"name": "Alice", "age": 25, "active": true})";
json::Parser parser(json_str);
json::Value value = parser.parse();
// 访问 JSON 数据
std::cout << "Name: " << value["name"].asString() << std::endl;
std::cout << "Age: " << value["age"].asNumber() << std::endl;
// 序列化为字符串
json::Serializer serializer;
std::string output = serializer.serialize(value);
std::cout << output << std::endl;
return 0;
}cd build
./examples/basic_usagecd build
./tests/json_tests- include/ 目录存放公共头文件,便于其他项目引用
- src/ 目录存放实现文件,隐藏实现细节
- examples/ 提供使用示例
- tests/ 包含单元测试
- RAII:资源获取即初始化
- 智能指针:自动内存管理
- 移动语义:高效的资源转移
- 运算符重载:提供直观的 API
- 访问者模式:处理不同类型的 JSON 值
- 递归下降解析:解析嵌套的 JSON 结构
本项目仅用于教学目的。