mirror of
https://github.com/nlohmann/json.git
synced 2026-10-03 21:20:30 +00:00
Add an error_handler parameter to to_msgpack
The MessagePack spec allows ill-formed UTF-8 in a str, so the default stays keep (also if JSON_STRICT_BINARY_UTF8 is enabled), but decoders such as msgpack-python reject it by default. With the parameter, strict catches such strings and replace/ignore sanitize them, the same way as for the other binary writers and dump(). Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
@@ -5473,26 +5473,29 @@ class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-spec
|
||||
|
||||
/// @brief create a MessagePack serialization of a given JSON value
|
||||
/// @sa https://json.nlohmann.me/api/basic_json/to_msgpack/
|
||||
static std::vector<std::uint8_t> to_msgpack(const basic_json& j)
|
||||
static std::vector<std::uint8_t> to_msgpack(const basic_json& j,
|
||||
const error_handler_t error_handler = error_handler_t::keep)
|
||||
{
|
||||
std::vector<std::uint8_t> result;
|
||||
result.reserve(detail::binary_reserve_hint(j));
|
||||
vector_writer(result).write_msgpack(j);
|
||||
vector_writer(result, error_handler).write_msgpack(j);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// @brief create a MessagePack serialization of a given JSON value
|
||||
/// @sa https://json.nlohmann.me/api/basic_json/to_msgpack/
|
||||
static void to_msgpack(const basic_json& j, detail::output_adapter<std::uint8_t> o)
|
||||
static void to_msgpack(const basic_json& j, detail::output_adapter<std::uint8_t> o,
|
||||
const error_handler_t error_handler = error_handler_t::keep)
|
||||
{
|
||||
binary_writer<std::uint8_t>(o).write_msgpack(j);
|
||||
binary_writer<std::uint8_t>(o, error_handler).write_msgpack(j);
|
||||
}
|
||||
|
||||
/// @brief create a MessagePack serialization of a given JSON value
|
||||
/// @sa https://json.nlohmann.me/api/basic_json/to_msgpack/
|
||||
static void to_msgpack(const basic_json& j, detail::output_adapter<char> o)
|
||||
static void to_msgpack(const basic_json& j, detail::output_adapter<char> o,
|
||||
const error_handler_t error_handler = error_handler_t::keep)
|
||||
{
|
||||
binary_writer<char>(o).write_msgpack(j);
|
||||
binary_writer<char>(o, error_handler).write_msgpack(j);
|
||||
}
|
||||
|
||||
/// @brief create a UBJSON serialization of a given JSON value
|
||||
|
||||
Reference in New Issue
Block a user