json_file.hpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef JSON_FILE_H_
  2. #define JSON_FILE_H_
  3. #include "reader.h"
  4. #include <fstream>
  5. #define JV_STRING(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isString()) ? _value_ = _json_[_key_].asString() : _value_ = _default_;
  6. #define JV_INT(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isInt()) ? _value_ = _json_[_key_].asInt() : _value_ = _default_;
  7. #define JV_INT64(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isInt64()) ? _value_ = _json_[_key_].asInt64() : _value_ = _default_;
  8. #define JV_UINT(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isUInt()) ? _value_ = _json_[_key_].asUInt() : _value_ = _default_;
  9. #define JV_UINT64(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isUInt64()) ? _value_ = _json_[_key_].asUInt64() : _value_ = _default_;
  10. #define JV_BOOL(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isBool()) ? _value_ = _json_[_key_].asBool() : _value_ = _default_;
  11. #define JV_DOUBLE(_json_, _key_, _value_, _default_) (_json_.isMember(_key_) && _json_[_key_].isDouble()) ? _value_ = _json_[_key_].asDouble() : _value_ = _default_;
  12. const std::string DEFAULT_STRING = "";
  13. const int DEFAULT_INT = 0;
  14. const bool DEFAULT_BOOL = false;
  15. const double DEFAULT_DOUBLE = 0;
  16. static bool ReadJsonFile(std::string file, Json::Value &json_data, std::ios_base::openmode mode = std::ios::in | std::ios::binary) {
  17. std::fstream json_file;
  18. json_file.open(file.c_str(), mode);
  19. if(false == json_file.is_open()) {
  20. return false;
  21. }
  22. bool ret = false;
  23. Json::Reader json_reader;
  24. ret = json_reader.parse(json_file, json_data);
  25. json_file.close();
  26. return ret;
  27. }
  28. static bool WriteJsonFile(std::string file, Json::Value &json_data, std::ios_base::openmode mode = std::ios::out | std::ios::trunc) {
  29. std::fstream json_file;
  30. json_file.open(file.c_str(), mode);
  31. if(false == json_file.is_open()) {
  32. return false;
  33. }
  34. json_file << json_data;
  35. json_file.close();
  36. return true;
  37. }
  38. #endif