#pragma once #include #include "nlohmann/json.hpp" #include "DebugLog.h" template class CJsonParser { public: bool Deserialize(const std::string& strFile, T& myOption) { try { // load json file std::ifstream infile(strFile); if (!infile.is_open()) { return false; } nlohmann::json jf; // parse string into json infile >> jf; // deserialize json into object myOption = jf.template get(); return true; } catch (std::exception& e) { std::string ss = e.what(); DebugLog("{} : {}", strFile, ss); return false; } } bool Serialize(const std::string& strFile, const T& myOption) { // convert object into json nlohmann::json jf(myOption); // persist to file std::ofstream outfile(strFile, std::ofstream::trunc); outfile << std::setw(4) << jf; return false; } bool Deserialize(const std::string& strFile, std::vector& myOption) { try { // load json file std::ifstream infile(strFile); if (!infile.is_open()) { return false; } nlohmann::json jf; // parse string into json infile >> jf; // deserialize json into object myOption = jf.template get>(); return true; } catch (std::exception& e) { std::string ss = e.what(); DebugLog("{} : {}", strFile, ss); return false; } } bool Serialize(const std::string& strFile, const std::vector& myOption) { // convert object into json nlohmann::json jf(myOption); // persist to file std::ofstream outfile(strFile, std::ofstream::trunc); outfile << std::setw(4) << jf; return false; } };