より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Visual StudioでRapidJsonを利用してみる

RapidJsonはC++Jsonパーサーです。Tencentによるオープンソースとなっています。

github.com

GitHubのページにも書いてありますが、特徴としては

  • RapidXmlにインスパイアを受けた
  • その名(Rapid)の通り、速い
  • メモリに優しい
  • ヘッダーファイルのみ

特に一番最後のヘッダーファイルのみという点が特徴的です

RapidJSON is a header-only C++ library.

なので、導入がしやすいです。include指定のみでOKですから。

C++だとNuGetで取得できてもプロジェクトに依存ライブラリなどの指定する必要がありますが、これについては追加のインクルードファイルのみの指定ですみますから。

では、導入してみます。

NuGetでRapidJsonをインストールもしくは、パッケージマネージャーコンソールで以下のようにコマンドを入力します。

Install-Package RapidJson

プロジェクトのプロパティにて追加の依存インクルードディレクトリにて以下を指定します。

$(SolutionDir)packages\rapidjson.1.0.2\build\native\include\rapidjson

※1.0.2の部分は取得したバージョンによって修正してください。

f:id:rimever:20210214080412p:plain

軽く試すのであれば、リポジトリのREADME.mdのUsage At Glanceに書いてあるページを試すといいです。

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

このソースコードではstarsの値10を取得して、加算して、出力するという処理をしています。

f:id:rimever:20210214080806p:plain