diff options
Diffstat (limited to 'src/squelch/jsoncons_helpers.hpp')
-rw-r--r-- | src/squelch/jsoncons_helpers.hpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/squelch/jsoncons_helpers.hpp b/src/squelch/jsoncons_helpers.hpp new file mode 100644 index 00000000..1ce6b094 --- /dev/null +++ b/src/squelch/jsoncons_helpers.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include <boost/optional.hpp> +#include <jsoncons/json.hpp> +#include <string> + +namespace squelch { + +template <class T> +boost::optional<T> get_optional(jsoncons::json const &json, std::string const &key) +{ + if (!json.has_key(key)) + { + return boost::none; + } + + auto value = json.at(key); + + if (!value.is<T>()) + { + return boost::none; + } + + return value.as<T>(); +} + +} // namespace squelch |