diff options
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/OSUtils.cpp | 15 | ||||
-rw-r--r-- | osdep/OSUtils.hpp | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/osdep/OSUtils.cpp b/osdep/OSUtils.cpp index 0257458a..3325c621 100644 --- a/osdep/OSUtils.cpp +++ b/osdep/OSUtils.cpp @@ -451,6 +451,21 @@ uint64_t OSUtils::jsonInt(const nlohmann::json &jv,const uint64_t dfl) return dfl; } +uint64_t OSUtils::jsonIntHex(const nlohmann::json &jv,const uint64_t dfl) +{ + try { + if (jv.is_number()) { + return (uint64_t)jv; + } else if (jv.is_string()) { + std::string s = jv; + return Utils::hexStrToU64(s.c_str()); + } else if (jv.is_boolean()) { + return ((bool)jv ? 1ULL : 0ULL); + } + } catch ( ... ) {} + return dfl; +} + bool OSUtils::jsonBool(const nlohmann::json &jv,const bool dfl) { try { diff --git a/osdep/OSUtils.hpp b/osdep/OSUtils.hpp index 45770b7f..fd1b31d9 100644 --- a/osdep/OSUtils.hpp +++ b/osdep/OSUtils.hpp @@ -278,6 +278,7 @@ public: static nlohmann::json jsonParse(const std::string &buf); static std::string jsonDump(const nlohmann::json &j,int indentation = 1); static uint64_t jsonInt(const nlohmann::json &jv,const uint64_t dfl); + static uint64_t jsonIntHex(const nlohmann::json &jv,const uint64_t dfl); static bool jsonBool(const nlohmann::json &jv,const bool dfl); static std::string jsonString(const nlohmann::json &jv,const char *dfl); static std::string jsonBinFromHex(const nlohmann::json &jv); |