#ifndef JSON_FILE_H_ #define JSON_FILE_H_ #include "reader.h" #include #define JV_STRING(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isString()) ? _value_ = _json_[_key_].asString() : _value_ = _default_; #define JV_INT(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isInt()) ? _value_ = _json_[_key_].asInt() : _value_ = _default_; #define JV_INT64(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isInt64()) ? _value_ = _json_[_key_].asInt64() : _value_ = _default_; #define JV_UINT(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isUInt()) ? _value_ = _json_[_key_].asUInt() : _value_ = _default_; #define JV_UINT64(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isUInt64()) ? _value_ = _json_[_key_].asUInt64() : _value_ = _default_; #define JV_BOOL(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isBool()) ? _value_ = _json_[_key_].asBool() : _value_ = _default_; #define JV_DOUBLE(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isDouble()) ? _value_ = _json_[_key_].asDouble() : _value_ = _default_; const std::string DEFAULT_STRING = ""; const int DEFAULT_INT = 0; const bool DEFAULT_BOOL = false; const double DEFAULT_DOUBLE = 0; static bool ReadJsonFile(std::string file, Json::Value &json_data, std::ios_base::openmode mode = std::ios::in | std::ios::binary) { std::fstream json_file; json_file.open(file.c_str(), mode); if(false == json_file.is_open()) { return false; } bool ret = false; Json::Reader json_reader; ret = json_reader.parse(json_file, json_data); json_file.close(); return ret; } static bool WriteJsonFile(std::string file, Json::Value &json_data, std::ios_base::openmode mode = std::ios::out | std::ios::trunc) { std::fstream json_file; json_file.open(file.c_str(), mode); if(false == json_file.is_open()) { return false; } json_file << json_data; json_file.close(); return true; } #endif