ranczo-io/libs/json_helpers.cpp
2025-08-14 10:59:01 +02:00

20 lines
596 B
C++

#include <ranczo-io/utils/json_helpers.hpp>
#include <boost/json/value.hpp>
std::optional<double> ranczo::json::as_number(const boost::json::value &v) {
if(v.is_double())
return v.as_double();
if(v.is_int64())
return static_cast< double >(v.as_int64());
if(v.is_uint64())
return static_cast< double >(v.as_uint64());
if(v.is_string()) {
const auto & s = v.as_string();
double out{};
if(auto res = std::from_chars(s.data(), s.data() + s.size(), out); res.ec == std::errc{})
return out;
}
return std::nullopt;
}