Copyright (c) 2011-2014 Milo Yip (miloyip@gmail.com)
RapidJSON is a JSON parser and generator for C++. It was inspired by RapidXml.
RapidJSON is small but complete. It supports both SAX and DOM style API. The SAX parser is only a half thousand lines of code.
RapidJSON is fast. Its performance can be comparable to strlen()
. It also optionally supports SSE2/SSE4.1 for acceleration.
RapidJSON is self-contained. It does not depend on external libraries such as BOOST. It even does not depend on STL.
RapidJSON is memory friendly. Each JSON value occupies exactly 16/20 bytes for most 32/64-bit machines (excluding text string). By default it uses a fast memory allocator, and the parser allocates memory compactly during parsing.
RapidJSON is Unicode friendly. It supports UTF-8, UTF-16, UTF-32 (LE & BE), and their detection, validation and transcoding internally. For example, you can read a UTF-8 file and let RapidJSON transcode the JSON strings into UTF-16 in the DOM. It also supports surrogates and "\u0000" (null character).
More features can be read here.
JSON(JavaScript Object Notation) is a light-weight data exchange format. RapidJSON should be in fully compliance with RFC7159/ECMA-404. More information about JSON can be obtained at
RapidJSON is cross-platform. Some platform/compiler combinations which have been tested are shown as follows.
Users can build and run the unit tests on their platform/compiler.
RapidJSON is a header-only C++ library. Just copy the include/rapidjson
folder to system or project's include path.
To build the tests and examples:
git submodule update --init
to get the files of thirdparty submodules (google test).rapidjson/build
(or system path
).rapidjson/build/
, run premake.bat
on Windows, premake.sh
on Linux or other platforms.rapidjson/build/vs2008/
or /vs2010/
.make
at rapidjson/build/gmake/
(e.g., make -f test.make config=release32
; make -f example.make config=debug32
).rapidjson/bin
.To build the Doxygen documentation:
doxygen build/Doxyfile
.doc/html
.This simple example parses a JSON string into a document (DOM), make a simple modification of the DOM, and finally stringify the DOM to a JSON string.
// rapidjson/example/simpledom/simpledom.cpp`
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
using namespace rapidjson;
int main() {
// 1. Parse a JSON string into DOM.
const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
Document d;
d.Parse(json);
// 2. Modify it by DOM.
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);
// 3. Stringify the DOM
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
d.Accept(writer);
// Output {"project":"rapidjson","stars":11}
std::cout << buffer.GetString() << std::endl;
return 0;
}
Note that this example did not handle potential errors.
The following diagram shows the process.
More examples are available.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。