Mercurial > minori
diff include/core/json.h @ 174:f88eda79c60a
anime/db: add some more json functionality, still doesn't compile :/
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Wed, 29 Nov 2023 13:53:56 -0500 |
parents | b315f3759c56 |
children | 9b10175be389 |
line wrap: on
line diff
--- a/include/core/json.h Tue Nov 28 13:53:54 2023 -0500 +++ b/include/core/json.h Wed Nov 29 13:53:56 2023 -0500 @@ -5,10 +5,32 @@ namespace JSON { -std::string GetString(nlohmann::json const& json, nlohmann::json::json_pointer const& ptr, std::string def = ""); -int GetInt(nlohmann::json const& json, nlohmann::json::json_pointer const& ptr, int def = 0); -bool GetBoolean(nlohmann::json const& json, nlohmann::json::json_pointer const& ptr, bool def = false); -double GetDouble(nlohmann::json const& json, nlohmann::json::json_pointer const& ptr, double def = 0); +template<typename T = std::string> +T GetString(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def) { + if (json.contains(ptr) && json[ptr].is_string()) + return json[ptr].get<T>(); + else + return def; +} + +template<typename T = int> +T GetNumber(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def = 0) { + if (json.contains(ptr) && json[ptr].is_number()) + return json[ptr].get<T>(); + else + return def; +} + +template<typename T = std::vector<std::string>> +T GetArray(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, T def = 0) { + if (json.contains(ptr) && json[ptr].is_array()) + return json[ptr].get<T>(); + else + return def; +} + +nlohmann::json GetValue(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr); +bool GetBoolean(const nlohmann::json& json, const nlohmann::json::json_pointer& ptr, bool def = false); } // namespace JSON