Frequently used words (click to add to your profile)

javaandroidc++linuxc#objective-ccocoa誰得qtrubypythonbathyscaphephpgamewindowsguic翻訳omegattwitterframeworktestbtronarduinovb.net計画中(planning stage)directxpreviewerゲームエンジンdom

最近の作業部屋活動履歴

2020-02-26
2020-02-10
2020-02-09
2019-12-30

最近のWikiの更新 (Recent Changes)

2020-02-26
2020-02-10
2019-12-30
2019-04-30
2019-04-02

Wikiガイド(Guide)

サイドバー (Side Bar)

rapidjson の使い勝手ょよくするためのヘルパー関数

概要

数多くある C++ で json を扱うライブラリの中で、結構有名なものとして rapidjson があります。 このライブラリは、処理がかなり速いことが売りとなっているようです。

C++ の標準ライブラリに頼らない専用の内部表現を持っていて、C++ プログラムからドキュメントデータを作成して json に変換、 という使い方ができる点が自分のお気に入りポイントということでよく使っています。

自分にとっての使い勝手をもう少し上げたかったので、ヘルパー関数を作ってみました。

用意した関数

rapidjson::Document から json シリアライズ化するには、 Accept メソッドを使えば良いですが、 いつも「どうやって書くんだっけ?」と調べていて効率が悪かったので、処理内容をこの関数にまとめました。
rapidjson::Document の中の特定階層から先だけの一部分を切り出して rapidjson::Document にする関数です。 対象の部分を ToStringBuffer で json 化し、そこからまた新しい rapidjson::Document を作成しているだけです。
rapidjson::Value からの値を取得において、一部の数値型を除いて自動型変換は掛かりませんので、対応しない型の取得関数を使用すると例外が発生してしまいます。 値の型が呼び出すまで分からないケースでは、 Value::IsDouble 等のチェック関数で調べてから、Value::GetDouble() 等の取得関数を使用する必要があります。 TryGet~ 関数は、型チェックを実施し、適合していれば取得関数を呼び出し、適合していなければ引数で与えられたデフォルト値を返します。

ライセンス

  • Boost License Version 1.0

変更履歴

  • 2017/06/05 : version 1.0

ダウンロード

* ソース