Open
Description
Given the following use case that comes from the documentation:
#include <iostream>
#include <string>
#include <boost/json/src.hpp>
#include <boost/describe.hpp>
#include <boost/exception/diagnostic_information.hpp>
struct money
{
std::string currency;
double value;
};
BOOST_DESCRIBE_STRUCT(money, (), (currency, value))
struct test
{
double pi;
bool happy;
money object;
};
BOOST_DESCRIBE_STRUCT(test, (), (pi, happy, object))
int main()
{
boost::json::value jv = {
{ "pi", 3.141 },
{ "happy", true },
{"object", {
//{ "currency", "USD" },
{ "value", 42.99 }
}}
};
try {
test res = boost::json::value_to<test>(jv);
}
catch (std::exception const& ex) {
std::cerr << boost::diagnostic_information(ex, true) << std::endl;
}
return 0;
}
The missing currency
member gives the following exception:
Dynamic exception type: boost::detail::with_throw_location<boost::system::system_error>
std::exception::what: unknown name [boost.json:39 at /nobackup/lid00lima21/debionne/miniconda3/envs/lima2/include/boost/json/detail/value_to.hpp:371 in function 'operator()']
It would be interesting to have an information where the exception occurred in the json value during value_to
conversion. Ideally something like errinfo_json_path="object.concurreny"
.
Metadata
Metadata
Assignees
Labels
No labels