47#include <nfx/json/Builder.h>
48#include <nfx/json/Document.h>
56using namespace nfx::json;
58namespace nfx::serialization::json
80 template <
typename T,
typename =
void>
93 std::void_t<decltype( SerializationTraits<T>::serialize(
94 std::declval<const T&>(), std::declval<nfx::json::Builder&>() ) )>> : std::true_type
101 template <
typename T>
108 template <
typename T,
typename =
void>
118 template <
typename T>
121 std::void_t<decltype( SerializationTraits<T>::fromDocument( std::declval<const Document&>() ) )>>
129 template <
typename T>
201 template <
typename T>
213 obj.fromDocument( doc, serializer );
233 static void serialize(
const std::monostate&, Builder& builder )
235 builder.write(
nullptr );
247 if( !doc.isNull(
"" ) )
249 throw std::runtime_error{
"Expected null for std::monostate" };
constexpr bool has_streaming_serialization_v
Helper variable template for has_streaming_serialization.
constexpr bool has_factory_deserialization_v
Helper variable template for has_factory_deserialization.
Serialization traits template (forward declaration).
static void fromDocument(const Document &doc, T &obj)
Convert Document to object (deserialization).
Templated JSON serializer with compile-time type mapping.
SFINAE detector for streaming serialization.
SFINAE detector for factory deserialization.
static void fromDocument(const Document &doc, std::monostate &)
Deserialize std::monostate from JSON null.
static void serialize(const std::monostate &, Builder &builder)
Serialize std::monostate to JSON null.