.TH "json.hpp" 3 "Sat Aug 29 2026 00:42:30" "cereal" \" -*- nroff -*- .ad l .nh .SH NAME json.hpp \- JSON input and output archives\&. .SH SYNOPSIS .br .PP \fR#include 'cereal/cereal\&.hpp'\fP .br \fR#include 'cereal/details/util\&.hpp'\fP .br \fR#include 'cereal/external/rapidjson/prettywriter\&.h'\fP .br \fR#include 'cereal/external/rapidjson/ostreamwrapper\&.h'\fP .br \fR#include 'cereal/external/rapidjson/istreamwrapper\&.h'\fP .br \fR#include 'cereal/external/rapidjson/document\&.h'\fP .br \fR#include 'cereal/external/base64\&.hpp'\fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br \fR#include \fP .br .SS "Classes" .in +1c .ti -1c .RI "struct \fBcereal::RapidJSONException\fP" .br .RI "An exception thrown when rapidjson fails an internal assertion\&. " .ti -1c .RI "class \fBcereal::JSONOutputArchive\fP" .br .RI "An output archive designed to save data to JSON\&. " .ti -1c .RI "class \fBcereal::JSONOutputArchive::Options\fP" .br .RI "A class containing various advanced options for the JSON archive\&. " .ti -1c .RI "class \fBcereal::JSONInputArchive\fP" .br .RI "An input archive designed to load data from JSON\&. " .in -1c .SS "Macros" .in +1c .ti -1c .RI "#define \fBCEREAL_RAPIDJSON_ASSERT_THROWS\fP" .br .ti -1c .RI "#define \fBCEREAL_RAPIDJSON_ASSERT\fP(x)" .br .ti -1c .RI "#define \fBCEREAL_RAPIDJSON_WRITE_DEFAULT_FLAGS\fP kWriteNanAndInfFlag" .br .ti -1c .RI "#define \fBCEREAL_RAPIDJSON_PARSE_DEFAULT_FLAGS\fP kParseFullPrecisionFlag | kParseNanAndInfFlag" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &, \fBNameValuePair\fP< T > const &)" .br .RI "Prologue for NVPs for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &, \fBNameValuePair\fP< T > const &)" .br .RI "Prologue for NVPs for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &, \fBNameValuePair\fP< T > const &)" .br .RI "Epilogue for NVPs for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &, \fBNameValuePair\fP< T > const &)" .br .RI "Epilogue for NVPs for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &, \fBDeferredData\fP< T > const &)" .br .RI "Prologue for deferred data for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &, \fBDeferredData\fP< T > const &)" .br .RI "Prologue for deferred data for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &, \fBDeferredData\fP< T > const &)" .br .RI "Epilogue for deferred for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &, \fBDeferredData\fP< T > const &)" .br .RI "Epilogue for deferred for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &ar, \fBSizeTag\fP< T > const &)" .br .RI "Prologue for SizeTags for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &, \fBSizeTag\fP< T > const &)" .br .RI "Prologue for SizeTags for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &, \fBSizeTag\fP< T > const &)" .br .RI "Epilogue for SizeTags for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &, \fBSizeTag\fP< T > const &)" .br .RI "Epilogue for SizeTags for JSON archives\&. " .ti -1c .RI "template::value, !\fBtraits::has_minimal_base_class_serialization\fP< T, \fBtraits::has_minimal_output_serialization\fP, \fBJSONOutputArchive\fP >::value, !\fBtraits::has_minimal_output_serialization\fP< T, \fBJSONOutputArchive\fP >::value > = traits::sfinae> void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &ar, T const &)" .br .RI "Prologue for all other types for JSON archives (except minimal types)\&. " .ti -1c .RI "template::value, !\fBtraits::has_minimal_base_class_serialization\fP< T, \fBtraits::has_minimal_input_serialization\fP, \fBJSONInputArchive\fP >::value, !\fBtraits::has_minimal_input_serialization\fP< T, \fBJSONInputArchive\fP >::value > = traits::sfinae> void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &ar, T const &)" .br .RI "Prologue for all other types for JSON archives\&. " .ti -1c .RI "template::value, !\fBtraits::has_minimal_base_class_serialization\fP< T, \fBtraits::has_minimal_output_serialization\fP, \fBJSONOutputArchive\fP >::value, !\fBtraits::has_minimal_output_serialization\fP< T, \fBJSONOutputArchive\fP >::value > = traits::sfinae> void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &ar, T const &)" .br .RI "Epilogue for all other types other for JSON archives (except minimal types)\&. " .ti -1c .RI "template::value, !\fBtraits::has_minimal_base_class_serialization\fP< T, \fBtraits::has_minimal_input_serialization\fP, \fBJSONInputArchive\fP >::value, !\fBtraits::has_minimal_input_serialization\fP< T, \fBJSONInputArchive\fP >::value > = traits::sfinae> void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &ar, T const &)" .br .RI "Epilogue for all other types other for JSON archives\&. " .ti -1c .RI "void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &ar, std::nullptr_t const &)" .br .RI "Prologue for arithmetic types for JSON archives\&. " .ti -1c .RI "void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &, std::nullptr_t const &)" .br .RI "Prologue for arithmetic types for JSON archives\&. " .ti -1c .RI "void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &, std::nullptr_t const &)" .br .RI "Epilogue for arithmetic types for JSON archives\&. " .ti -1c .RI "void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &, std::nullptr_t const &)" .br .RI "Epilogue for arithmetic types for JSON archives\&. " .ti -1c .RI "template::value > = traits::sfinae> void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &ar, T const &)" .br .RI "Prologue for arithmetic types for JSON archives\&. " .ti -1c .RI "template::value > = traits::sfinae> void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &, T const &)" .br .RI "Prologue for arithmetic types for JSON archives\&. " .ti -1c .RI "template::value > = traits::sfinae> void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &, T const &)" .br .RI "Epilogue for arithmetic types for JSON archives\&. " .ti -1c .RI "template::value > = traits::sfinae> void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &, T const &)" .br .RI "Epilogue for arithmetic types for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONOutputArchive\fP &ar, std::basic_string< CharT, Traits, Alloc > const &)" .br .RI "Prologue for strings for JSON archives\&. " .ti -1c .RI "template void \fBcereal::prologue\fP (\fBJSONInputArchive\fP &, std::basic_string< CharT, Traits, Alloc > const &)" .br .RI "Prologue for strings for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONOutputArchive\fP &, std::basic_string< CharT, Traits, Alloc > const &)" .br .RI "Epilogue for strings for JSON archives\&. " .ti -1c .RI "template void \fBcereal::epilogue\fP (\fBJSONInputArchive\fP &, std::basic_string< CharT, Traits, Alloc > const &)" .br .RI "Epilogue for strings for JSON archives\&. " .ti -1c .RI "template void \fBcereal::CEREAL_SAVE_FUNCTION_NAME\fP (\fBJSONOutputArchive\fP &ar, \fBNameValuePair\fP< T > const &t)" .br .RI "Serializing NVP types to JSON\&. " .ti -1c .RI "template void \fBcereal::CEREAL_LOAD_FUNCTION_NAME\fP (\fBJSONInputArchive\fP &ar, \fBNameValuePair\fP< T > &t)" .br .ti -1c .RI "void \fBcereal::CEREAL_SAVE_FUNCTION_NAME\fP (\fBJSONOutputArchive\fP &ar, std::nullptr_t const &t)" .br .RI "Saving for nullptr to JSON\&. " .ti -1c .RI "void \fBcereal::CEREAL_LOAD_FUNCTION_NAME\fP (\fBJSONInputArchive\fP &ar, std::nullptr_t &t)" .br .RI "Loading arithmetic from JSON\&. " .ti -1c .RI "template::value > = traits::sfinae> void \fBcereal::CEREAL_SAVE_FUNCTION_NAME\fP (\fBJSONOutputArchive\fP &ar, T const &t)" .br .RI "Saving for arithmetic to JSON\&. " .ti -1c .RI "template::value > = traits::sfinae> void \fBcereal::CEREAL_LOAD_FUNCTION_NAME\fP (\fBJSONInputArchive\fP &ar, T &t)" .br .RI "Loading arithmetic from JSON\&. " .ti -1c .RI "template void \fBcereal::CEREAL_SAVE_FUNCTION_NAME\fP (\fBJSONOutputArchive\fP &ar, std::basic_string< CharT, Traits, Alloc > const &str)" .br .RI "saving string to JSON " .ti -1c .RI "template void \fBcereal::CEREAL_LOAD_FUNCTION_NAME\fP (\fBJSONInputArchive\fP &ar, std::basic_string< CharT, Traits, Alloc > &str)" .br .RI "loading string from JSON " .ti -1c .RI "template void \fBcereal::CEREAL_SAVE_FUNCTION_NAME\fP (\fBJSONOutputArchive\fP &, \fBSizeTag\fP< T > const &)" .br .RI "Saving SizeTags to JSON\&. " .ti -1c .RI "template void \fBcereal::CEREAL_LOAD_FUNCTION_NAME\fP (\fBJSONInputArchive\fP &ar, \fBSizeTag\fP< T > &st)" .br .RI "Loading SizeTags from JSON\&. " .in -1c .SH "Detailed Description" .PP JSON input and output archives\&. .SH "Macro Definition Documentation" .PP .SS "#define CEREAL_RAPIDJSON_ASSERT( x)" \fBValue:\fP .nf if(!(x)){ \\ throw ::cereal::RapidJSONException("rapidjson internal assertion failure: " #x); } .PP .fi .SH "Function Documentation" .PP .SS "template void cereal::epilogue (\fBJSONInputArchive\fP & , \fBDeferredData\fP< T > const & )\fR [inline]\fP" .PP Epilogue for deferred for JSON archives\&. Do nothing for the defer wrapper .SS "template void cereal::epilogue (\fBJSONInputArchive\fP & , \fBNameValuePair\fP< T > const & )\fR [inline]\fP" .PP Epilogue for NVPs for JSON archives\&. NVPs do not start or finish nodes - they just set up the names .SS "template void cereal::epilogue (\fBJSONOutputArchive\fP & , \fBDeferredData\fP< T > const & )\fR [inline]\fP" .PP Epilogue for deferred for JSON archives\&. NVPs do not start or finish nodes - they just set up the names .SS "template void cereal::epilogue (\fBJSONOutputArchive\fP & , \fBNameValuePair\fP< T > const & )\fR [inline]\fP" .PP Epilogue for NVPs for JSON archives\&. NVPs do not start or finish nodes - they just set up the names .SS "template void cereal::epilogue (\fBJSONOutputArchive\fP & , \fBSizeTag\fP< T > const & )\fR [inline]\fP" .PP Epilogue for SizeTags for JSON archives\&. SizeTags are strictly ignored for JSON .SS "template::value, !traits::has_minimal_base_class_serialization< T, traits::has_minimal_output_serialization, JSONOutputArchive >::value, !traits::has_minimal_output_serialization< T, JSONOutputArchive >::value > = traits::sfinae> void cereal::epilogue (\fBJSONOutputArchive\fP & ar, T const & )\fR [inline]\fP" .PP Epilogue for all other types other for JSON archives (except minimal types)\&. Finishes the node created in the prologue .PP Minimal types do not start or finish nodes .SS "template void cereal::prologue (\fBJSONOutputArchive\fP & , \fBDeferredData\fP< T > const & )\fR [inline]\fP" .PP Prologue for deferred data for JSON archives\&. Do nothing for the defer wrapper .SS "template void cereal::prologue (\fBJSONOutputArchive\fP & , \fBNameValuePair\fP< T > const & )\fR [inline]\fP" .PP Prologue for NVPs for JSON archives\&. NVPs do not start or finish nodes - they just set up the names .SS "template void cereal::prologue (\fBJSONOutputArchive\fP & ar, \fBSizeTag\fP< T > const & )\fR [inline]\fP" .PP Prologue for SizeTags for JSON archives\&. SizeTags are strictly ignored for JSON, they just indicate that the current node should be made into an array .SS "template::value, !traits::has_minimal_base_class_serialization< T, traits::has_minimal_output_serialization, JSONOutputArchive >::value, !traits::has_minimal_output_serialization< T, JSONOutputArchive >::value > = traits::sfinae> void cereal::prologue (\fBJSONOutputArchive\fP & ar, T const & )\fR [inline]\fP" .PP Prologue for all other types for JSON archives (except minimal types)\&. Starts a new node, named either automatically or by some NVP, that may be given data by the type about to be archived .PP Minimal types do not start or finish nodes .SH "Author" .PP Generated automatically by Doxygen for cereal from the source code\&.