一個 C++ 的快速 JSON 解析器和生成器:Rapidjson

n6xb 9年前發布 | 20K 次閱讀 C/C++開發 RapidJSON

Rapidjson 是一個 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 風格的 API 設計。

一個 C++ 的快速 JSON 解析器和生成器:Rapidjson

示例代碼:

// 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;
}

主要特點:

  • 體積小,功能全,提供 SAX 和 DOM 風格的 API,僅是 SAX 解析器只有百行代碼

  • 快速

  • 無需依賴其他第三方庫

  • Compact. Each JSON value is 16 or 20 bytes for 32 or 64-bit machines respectively (excluding text string storage). With the custom memory allocator, parser allocates memory compactly during parsing.

  • 完全兼容 RFC4627 ,支持 UTF-8, UTF-16 和 UTF-32.

  • Support both in-situ parsing (directly decode strings into the source JSON text) and non-destructive parsing (decode strings into new buffers).

  • Parse number to int/unsigned/int64_t/uint64_t/double depending on input

  • 支持自定義內存分配。Also, the default memory pool allocator can also be supplied with a user buffer (such as a buffer allocated on user's heap or programme stack) to minimize allocation.

項目主頁:http://www.baiduhome.net/lib/view/home/1428311591963

 本文由用戶 n6xb 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!