48#if __has_include( <nfx/datetime/TimeSpan.h>)
50# include <nfx/datetime/TimeSpan.h>
52namespace nfx::serialization::json
66 static void serialize(
const nfx::time::TimeSpan& obj, Builder& builder )
68 builder.write( obj.toString() );
76 static void fromDocument(
const Document& doc, nfx::time::TimeSpan& obj )
78 if( doc.is<std::string>(
"" ) )
80 auto val = doc.get<std::string>(
"" );
81 if( val.has_value() && !val.value().empty() )
83 if( !nfx::time::TimeSpan::fromString( val.value(), obj ) )
85 throw std::runtime_error{
"Invalid TimeSpan format: expected ISO 8601 duration string" };
99#if __has_include( <nfx/datetime/DateTime.h>)
101# include <nfx/datetime/DateTime.h>
103namespace nfx::serialization::json
117 static void serialize(
const nfx::time::DateTime& obj, Builder& builder )
119 builder.write( obj.toString( nfx::time::DateTime::Format::Iso8601Precise ) );
127 static void fromDocument(
const Document& doc, nfx::time::DateTime& obj )
129 if( doc.is<std::string>(
"" ) )
131 auto val = doc.get<std::string>(
"" );
132 if( val.has_value() && !val.value().empty() )
134 if( !nfx::time::DateTime::fromString( val.value(), obj ) )
136 throw std::runtime_error{
"Invalid DateTime format: expected ISO 8601 string" };
150#if __has_include( <nfx/datetime/DateTimeOffset.h>)
152# include <nfx/datetime/DateTimeOffset.h>
154namespace nfx::serialization::json
168 static void serialize(
const nfx::time::DateTimeOffset& obj, Builder& builder )
170 builder.write( obj.toString( nfx::time::DateTime::Format::Iso8601Precise ) );
178 static void fromDocument(
const Document& doc, nfx::time::DateTimeOffset& obj )
180 if( doc.is<std::string>(
"" ) )
182 auto val = doc.get<std::string>(
"" );
183 if( val.has_value() && !val.value().empty() )
185 if( !nfx::time::DateTimeOffset::fromString( val.value(), obj ) )
187 throw std::runtime_error{
"Invalid DateTimeOffset format: expected ISO 8601 string" };
Templated JSON serializer with compile-time type mapping.
Serialization traits template (forward declaration).
static void fromDocument(const Document &doc, T &obj)
Convert Document to object (deserialization).