プログラム 技術

C++でJsonを扱う

C++でJsonは学生時代にゲームを作成しており、その際にデータを外部ファイルに保存するのに使っていました。C++だとJsonの種類がPicjsonやJsonCppといった感じで数ある中からrapidJsonを使っています

そもそもrapidJsonとはなんぞや

rapidJsonの特徴としてはいくつかありますが特に私が気にいっている点が3つあります。ゲームを作る上で処理速度やメモリ、日本語対応は大事です

  1. rapidという名前の通り処理が速い
  2. 省メモリで使用できる
  3. UTF-8、UTF-16、UTF-32 のサポートがあり、日本語を含む JSON も問題なく扱える

rapidJsonをインストールする

Nugetから取得する

C++のプロジェクト上にある「Nugetのパッケージの管理」からrapidJsonをインストールします

対象ソリューション上で右クリックし、「NuGetパッケージの管理(N)...」をクリック
検索窓で「rapidjson」と入力し、一番上にある「rapidjson」をインストールする

追加の依存インクルードに追加する

インストールしただけでは使えないので、使えるように設定に追加します

対象ソリューション上で右クリックし、「プロパティ(R)」をクリックする
左側の構成プロパティから「C/C++」を選択し、一番上にある「追加のインクールドディレクトリ」の左側の下矢印をクリックし、「編集」を選択する
「$(SolutionDir)packages\rapidjson.1.0.2\build\native\include\rapidjson」を追加する
「追加のインクルードディレクトリ」に先ほど設定した値が設定されていることが確認できたら「OK」を押す
1.0.2のところはインストールされているrapidJsonのバージョンによって変更する

実際にrapidJsonを呼び出してみる

これでrapidJsonを呼び出すことができるようになったので、実際に使ってみます

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

const char* json = "{\"project\":\"rapidjson\",\"stars\":10, \"名前\":\"テスト太郎\"}";
rapidjson::Document d;
d.Parse(json);

// starsの値に+1する
rapidjson::Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);

// 文字列化する
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
d.Accept(writer);

// 内容を出力する
// {"project":"rapidjson","stars":11,"名前":"テスト太郎"} と出力される
std::cout << buffer.GetString() << std::endl; 

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

お問い合わせ
お問い合わせ  | アドバンスド・ソリューション株式会社
お問い合わせ | アドバンスド・ソリューション株式会社

お問い合わせはこちら

-プログラム, 技術
-