RapidJSON介绍
最新消息
- [2026.06.30]:发布字符串解析与序列化快速路径优化,提升UTF-8内存输入解析和StringBuffer输出场景性能。
项目简介
简介
RapidJSON是Tencent开源的高性能、轻量级、Header-only C++ JSON解析器与生成器,支持SAX和DOM两种使用方式。RapidJSON不依赖STL和Boost等外部库,适合在服务端、嵌入式和性能敏感场景中进行JSON数据解析、构造、校验与序列化。其核心优势为接口简单、内存占用低、跨平台能力好,并支持UTF-8/UTF-16/UTF-32等编码处理。
核心模块
RapidJSON整体分为解析模块、DOM模块、写入模块和辅助工具模块等核心部分,其内部模块划分如下:
- Reader解析模块:提供SAX风格的流式JSON解析能力,负责词法扫描、字符串解码、数值解析与事件派发;
- Document/Value DOM模块:提供JSON对象树的构建、查询、修改、拷贝与内存分配管理能力;
- Writer写入模块:提供SAX事件到JSON文本的序列化能力,支持紧凑输出与格式化输出;
- Stream流模块:抽象内存、文件、字符串等输入输出通道,支撑解析和写入过程;
- Encoding编码模块:提供UTF-8、UTF-16、UTF-32编码转换与校验能力;
- Schema校验模块:支持JSON Schema校验,用于检查JSON数据结构与约束。
对外核心接口函数
以下为RapidJSON(以C++为例)对外的核心接口函数,覆盖DOM解析、SAX解析、JSON序列化、Schema校验等核心能力。
| 模块分类 | 接口函数/方法 | 功能描述 |
|---|---|---|
| DOM解析 | Document::Parse |
将JSON字符串解析为DOM对象树。 |
| DOM解析 | Document::ParseStream |
从输入流解析JSON数据。 |
| DOM访问 | Value::FindMember |
查询Object成员并返回迭代器。 |
| DOM访问 | Value::GetArray |
获取Array视图并遍历数组元素。 |
| DOM修改 | Value::AddMember |
向Object添加键值成员。 |
| DOM修改 | Value::PushBack |
向Array追加元素。 |
| 序列化 | Writer::String |
写入JSON字符串值。 |
| 序列化 | Writer::WriteString |
将字符串内容转义并输出到目标流。 |
| 序列化 | PrettyWriter |
生成带缩进和换行的格式化JSON文本。 |
| 流处理 | StringBuffer::GetString |
获取序列化后的JSON字符串。 |
| 流处理 | MemoryStream |
从内存缓冲区读取JSON输入。 |
| Schema校验 | SchemaDocument |
构造JSON Schema文档。 |
| Schema校验 | SchemaValidator |
校验JSON数据是否符合Schema。 |
目录结构
项目目录层级介绍如下:
# 文档目录
README.md # 项目说明
LICENSE # 代码许可证
kunpeng_opti_v1.0.0.patch # 基于dev与master生成的优化补丁
docs/
├── LICENSE # 文档许可证
└── zh/
├── api_reference.md # API参考
├── installation_guide.md # 安装指南
├── menu_rapidjson.md # 文档导航
├── quick_start.md # 快速入门
└── release_notes.md # 版本说明书
# 代码目录(dev分支)
rapidjson/
├── include/rapidjson/ # Header-only核心头文件
│ ├── reader.h # SAX解析器与字符串扫描逻辑
│ ├── writer.h # JSON写入器与字符串序列化逻辑
│ ├── document.h # DOM Document/Value定义
│ ├── stringbuffer.h # 内存输出缓冲
│ ├── memorystream.h # 内存输入流
│ └── ...
├── example/ # 使用示例
├── test/ # 单元测试与性能测试
├── doc/ # 上游文档
├── bin/ # 测试数据
├── CMakeLists.txt # CMake构建文件
└── readme.md # 上游项目说明版本说明
基于鲲鹏优化的RapidJSON每个发布版本特性变更详细信息,请参见《版本说明书》。
环境部署
基于鲲鹏优化的RapidJSON编译环境、依赖获取与安装步骤参见《安装指南》。
快速入门
安装RapidJSON后如何快速上手使用RapidJSON请参见《快速入门》。
文档
| 资源名称 | 资源简介 |
|---|---|
| 版本说明书 | 提供基于鲲鹏优化的RapidJSON每个发布版本的基础信息和特性更新说明。 |
| 快速入门 | 提供基于鲲鹏优化的RapidJSON快速上手示例与编译运行说明。 |
| API参考 | 提供字符串解析和序列化优化相关接口说明与函数定义。 |
| 安装指南 | 提供基于鲲鹏优化代码RapidJSON的环境配置与编译安装的详细指导。 |
免责声明
致RapidJSON使用者
本软件仅供调试和开发之用,使用者需自行承担使用风险,并理解以下内容:
- 此代码仓计划参与RapidJSON软件开源,仅对RapidJSON部分函数在鲲鹏处理器上进行性能优化,编码风格遵照原生开源软件,继承原生开源软件安全设计,不破坏原生开源软件设计及编码风格和方式。软件的任何漏洞与安全问题,均由相应的上游社区根据其漏洞和安全响应机制解决。请密切关注上游社区发布的通知和版本更新。鲲鹏计算社区对软件的漏洞及安全问题不承担任何责任。
- 数据处理及删除:用户在使用本软件过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
- 数据保密与传播:使用者了解并同意不得将通过本软件产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本软件及其开发者概不负责。
- 用户输入安全性:用户需自行保证输入的JSON数据、文件路径和命令行参数的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入不当所导致的问题,本软件及其开发者概不负责。
免责声明范围:本免责声明适用于所有使用本软件的个人或实体。使用本软件即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本软件。
在使用本软件之前,请谨慎阅读并理解以上免责声明的内容。对于使用本软件所产生的任何问题或疑问,请及时联系开发者。
致数据所有者
如果您不希望您的数据集等信息在RapidJSON优化仓库中被提及,或希望更新相关描述,请在GitCode提交issue,我们将根据您的要求删除或更新相关描述。感谢您的理解与支持。
License
贡献声明
欢迎大家为社区做贡献,如果使用过程中有任何问题/建议,或者需要反馈特性需求和bug报告,可以提交Issues联系我们,具体贡献方法可参考这里。同时也欢迎大家在讨论专区展开讨论交流。感谢您的支持。
致谢
RapidJSON由华为公司的下列部门联合贡献:
- 鲲鹏计算Boostkit开发部
感谢来自社区的每一个PR,欢迎贡献RapidJSON!