improved date de/serialization (#14679)

This commit is contained in:
devhl-labs 2023-02-15 10:46:48 -05:00 committed by GitHub
parent d7edbad8d6
commit 7c57024e69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 229 additions and 90 deletions

View File

@ -6,6 +6,7 @@
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -14,3 +15,4 @@
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"

View File

@ -12,7 +12,10 @@ namespace {{packageName}}.{{clientPackage}}
/// </summary>
{{>visibility}} class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
{{>DateTimeFormats}}
};
@ -29,7 +32,7 @@ namespace {{packageName}}.{{clientPackage}}
string value = reader.GetString(){{nrt!}};
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -43,6 +46,6 @@ namespace {{packageName}}.{{clientPackage}}
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -12,7 +12,10 @@ namespace {{packageName}}.{{clientPackage}}
/// </summary>
{{>visibility}} class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
{{>DateTimeFormats}}
};
@ -29,7 +32,7 @@ namespace {{packageName}}.{{clientPackage}}
string value = reader.GetString(){{nrt!}};
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -47,7 +50,7 @@ namespace {{packageName}}.{{clientPackage}}
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -4,11 +4,18 @@
{{>visibility}} class {{classname}}JsonConverter : JsonConverter<{{classname}}>
{
{{#allVars}}
{{#isDateTime}}
/// <summary>
/// The format to use to serialize {{name}}
/// </summary>
public static string {{name}}Format { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
{{/isDateTime}}
{{#isDate}}
/// <summary>
/// The format to use to serialize {{name}}
/// </summary>
public string {{name}}Format { get; set; } = "yyyy-MM-dd";
public static string {{name}}Format { get; set; } = "yyyy-MM-dd";
{{/isDate}}
{{/allVars}}
@ -219,17 +226,24 @@
{{#isDate}}
{{#isNullable}}
if ({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}} != null)
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.Value.ToString(this.{{name}}Format));
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.Value.ToString({{name}}Format));
else
writer.WriteNull("{{baseName}}");
{{/isNullable}}
{{^isNullable}}
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.ToString(this.{{name}}Format));
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.ToString({{name}}Format));
{{/isNullable}}
{{/isDate}}
{{#isDateTime}}
writer.WritePropertyName("{{baseName}}");
JsonSerializer.Serialize(writer, {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}, jsonSerializerOptions);
{{#isNullable}}
if ({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}} != null)
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.Value.ToString({{name}}Format));
else
writer.WriteNull("{{baseName}}");
{{/isNullable}}
{{^isNullable}}
writer.WriteString("{{baseName}}", {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}.ToString({{name}}Format));
{{/isNullable}}
{{/isDateTime}}
{{#isEnum}}
{{#isNumeric}}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -66,6 +71,6 @@ namespace Org.OpenAPITools.Client
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -70,7 +75,7 @@ namespace Org.OpenAPITools.Client
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize DateOnlyProperty
/// </summary>
public string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd";
public static string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// A Json reader.
@ -152,7 +152,7 @@ namespace Org.OpenAPITools.Model
{
writer.WriteStartObject();
writer.WriteString("dateOnlyProperty", dateOnlyClass.DateOnlyProperty.ToString(this.DateOnlyPropertyFormat));
writer.WriteString("dateOnlyProperty", dateOnlyClass.DateOnlyProperty.ToString(DateOnlyPropertyFormat));
writer.WriteEndObject();
}

View File

@ -368,7 +368,12 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize Date
/// </summary>
public string DateFormat { get; set; } = "yyyy-MM-dd";
public static string DateFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// The format to use to serialize DateTime
/// </summary>
public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
@ -491,9 +496,8 @@ namespace Org.OpenAPITools.Model
JsonSerializer.Serialize(writer, formatTest.Binary, jsonSerializerOptions);
writer.WritePropertyName("byte");
JsonSerializer.Serialize(writer, formatTest.ByteProperty, jsonSerializerOptions);
writer.WriteString("date", formatTest.Date.ToString(this.DateFormat));
writer.WritePropertyName("dateTime");
JsonSerializer.Serialize(writer, formatTest.DateTime, jsonSerializerOptions);
writer.WriteString("date", formatTest.Date.ToString(DateFormat));
writer.WriteString("dateTime", formatTest.DateTime.ToString(DateTimeFormat));
writer.WritePropertyName("decimal");
JsonSerializer.Serialize(writer, formatTest.DecimalProperty, jsonSerializerOptions);
writer.WriteNumber("double", formatTest.DoubleProperty);

View File

@ -133,6 +133,11 @@ namespace Org.OpenAPITools.Model
/// </summary>
public class MixedPropertiesAndAdditionalPropertiesClassJsonConverter : JsonConverter<MixedPropertiesAndAdditionalPropertiesClass>
{
/// <summary>
/// The format to use to serialize DateTime
/// </summary>
public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
/// </summary>
@ -202,8 +207,7 @@ namespace Org.OpenAPITools.Model
{
writer.WriteStartObject();
writer.WritePropertyName("dateTime");
JsonSerializer.Serialize(writer, mixedPropertiesAndAdditionalPropertiesClass.DateTime, jsonSerializerOptions);
writer.WriteString("dateTime", mixedPropertiesAndAdditionalPropertiesClass.DateTime.ToString(DateTimeFormat));
writer.WritePropertyName("map");
JsonSerializer.Serialize(writer, mixedPropertiesAndAdditionalPropertiesClass.Map, jsonSerializerOptions);
writer.WriteString("uuid", mixedPropertiesAndAdditionalPropertiesClass.Uuid);

View File

@ -189,7 +189,12 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize DateProp
/// </summary>
public string DatePropFormat { get; set; } = "yyyy-MM-dd";
public static string DatePropFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// The format to use to serialize DatetimeProp
/// </summary>
public static string DatetimePropFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
@ -307,11 +312,13 @@ namespace Org.OpenAPITools.Model
else
writer.WriteNull("boolean_prop");
if (nullableClass.DateProp != null)
writer.WriteString("date_prop", nullableClass.DateProp.Value.ToString(this.DatePropFormat));
writer.WriteString("date_prop", nullableClass.DateProp.Value.ToString(DatePropFormat));
else
writer.WriteNull("date_prop");
writer.WritePropertyName("datetime_prop");
JsonSerializer.Serialize(writer, nullableClass.DatetimeProp, jsonSerializerOptions);
if (nullableClass.DatetimeProp != null)
writer.WriteString("datetime_prop", nullableClass.DatetimeProp.Value.ToString(DatetimePropFormat));
else
writer.WriteNull("datetime_prop");
if (nullableClass.IntegerProp != null)
writer.WriteNumber("integer_prop", nullableClass.IntegerProp.Value);
else

View File

@ -213,6 +213,11 @@ namespace Org.OpenAPITools.Model
/// </summary>
public class OrderJsonConverter : JsonConverter<Order>
{
/// <summary>
/// The format to use to serialize ShipDate
/// </summary>
public static string ShipDateFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
/// </summary>
@ -294,8 +299,7 @@ namespace Org.OpenAPITools.Model
writer.WriteNumber("id", order.Id);
writer.WriteNumber("petId", order.PetId);
writer.WriteNumber("quantity", order.Quantity);
writer.WritePropertyName("shipDate");
JsonSerializer.Serialize(writer, order.ShipDate, jsonSerializerOptions);
writer.WriteString("shipDate", order.ShipDate.ToString(ShipDateFormat));
var statusRawValue = Order.StatusEnumToJsonValue(order.Status);
if (statusRawValue != null)
writer.WriteString("status", statusRawValue);

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString();
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -66,6 +71,6 @@ namespace Org.OpenAPITools.Client
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString();
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -70,7 +75,7 @@ namespace Org.OpenAPITools.Client
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize DateOnlyProperty
/// </summary>
public string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd";
public static string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// A Json reader.
@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Model
{
writer.WriteStartObject();
writer.WriteString("dateOnlyProperty", dateOnlyClass.DateOnlyProperty.ToString(this.DateOnlyPropertyFormat));
writer.WriteString("dateOnlyProperty", dateOnlyClass.DateOnlyProperty.ToString(DateOnlyPropertyFormat));
writer.WriteEndObject();
}

View File

@ -366,7 +366,12 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize Date
/// </summary>
public string DateFormat { get; set; } = "yyyy-MM-dd";
public static string DateFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// The format to use to serialize DateTime
/// </summary>
public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
@ -489,9 +494,8 @@ namespace Org.OpenAPITools.Model
JsonSerializer.Serialize(writer, formatTest.Binary, jsonSerializerOptions);
writer.WritePropertyName("byte");
JsonSerializer.Serialize(writer, formatTest.ByteProperty, jsonSerializerOptions);
writer.WriteString("date", formatTest.Date.ToString(this.DateFormat));
writer.WritePropertyName("dateTime");
JsonSerializer.Serialize(writer, formatTest.DateTime, jsonSerializerOptions);
writer.WriteString("date", formatTest.Date.ToString(DateFormat));
writer.WriteString("dateTime", formatTest.DateTime.ToString(DateTimeFormat));
writer.WritePropertyName("decimal");
JsonSerializer.Serialize(writer, formatTest.DecimalProperty, jsonSerializerOptions);
writer.WriteNumber("double", formatTest.DoubleProperty);

View File

@ -131,6 +131,11 @@ namespace Org.OpenAPITools.Model
/// </summary>
public class MixedPropertiesAndAdditionalPropertiesClassJsonConverter : JsonConverter<MixedPropertiesAndAdditionalPropertiesClass>
{
/// <summary>
/// The format to use to serialize DateTime
/// </summary>
public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
/// </summary>
@ -200,8 +205,7 @@ namespace Org.OpenAPITools.Model
{
writer.WriteStartObject();
writer.WritePropertyName("dateTime");
JsonSerializer.Serialize(writer, mixedPropertiesAndAdditionalPropertiesClass.DateTime, jsonSerializerOptions);
writer.WriteString("dateTime", mixedPropertiesAndAdditionalPropertiesClass.DateTime.ToString(DateTimeFormat));
writer.WritePropertyName("map");
JsonSerializer.Serialize(writer, mixedPropertiesAndAdditionalPropertiesClass.Map, jsonSerializerOptions);
writer.WriteString("uuid", mixedPropertiesAndAdditionalPropertiesClass.Uuid);

View File

@ -187,7 +187,12 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize DateProp
/// </summary>
public string DatePropFormat { get; set; } = "yyyy-MM-dd";
public static string DatePropFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// The format to use to serialize DatetimeProp
/// </summary>
public static string DatetimePropFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
@ -305,11 +310,13 @@ namespace Org.OpenAPITools.Model
else
writer.WriteNull("boolean_prop");
if (nullableClass.DateProp != null)
writer.WriteString("date_prop", nullableClass.DateProp.Value.ToString(this.DatePropFormat));
writer.WriteString("date_prop", nullableClass.DateProp.Value.ToString(DatePropFormat));
else
writer.WriteNull("date_prop");
writer.WritePropertyName("datetime_prop");
JsonSerializer.Serialize(writer, nullableClass.DatetimeProp, jsonSerializerOptions);
if (nullableClass.DatetimeProp != null)
writer.WriteString("datetime_prop", nullableClass.DatetimeProp.Value.ToString(DatetimePropFormat));
else
writer.WriteNull("datetime_prop");
if (nullableClass.IntegerProp != null)
writer.WriteNumber("integer_prop", nullableClass.IntegerProp.Value);
else

View File

@ -211,6 +211,11 @@ namespace Org.OpenAPITools.Model
/// </summary>
public class OrderJsonConverter : JsonConverter<Order>
{
/// <summary>
/// The format to use to serialize ShipDate
/// </summary>
public static string ShipDateFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
/// </summary>
@ -292,8 +297,7 @@ namespace Org.OpenAPITools.Model
writer.WriteNumber("id", order.Id);
writer.WriteNumber("petId", order.PetId);
writer.WriteNumber("quantity", order.Quantity);
writer.WritePropertyName("shipDate");
JsonSerializer.Serialize(writer, order.ShipDate, jsonSerializerOptions);
writer.WriteString("shipDate", order.ShipDate.ToString(ShipDateFormat));
var statusRawValue = Order.StatusEnumToJsonValue(order.Status);
if (statusRawValue != null)
writer.WriteString("status", statusRawValue);

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -66,6 +71,6 @@ namespace Org.OpenAPITools.Client
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -70,7 +75,7 @@ namespace Org.OpenAPITools.Client
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -66,6 +71,6 @@ namespace Org.OpenAPITools.Client
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -70,7 +75,7 @@ namespace Org.OpenAPITools.Client
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -66,6 +71,6 @@ namespace Org.OpenAPITools.Client
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString()!;
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -70,7 +75,7 @@ namespace Org.OpenAPITools.Client
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString();
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -66,6 +71,6 @@ namespace Org.OpenAPITools.Client
/// <param name="dateTimeValue"></param>
/// <param name="options"></param>
public override void Write(Utf8JsonWriter writer, DateTime dateTimeValue, JsonSerializerOptions options) =>
writer.WriteStringValue(dateTimeValue.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}

View File

@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client
/// </summary>
public class DateTimeNullableJsonConverter : JsonConverter<DateTime?>
{
public static readonly string[] FORMATS = {
/// <summary>
/// The formats used to deserialize the date
/// </summary>
public static string[] Formats { get; } = {
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffffffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffK",
@ -29,6 +32,7 @@ namespace Org.OpenAPITools.Client
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'ffK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fK",
"yyyy'-'MM'-'dd'T'HH':'mm':'ssK",
"yyyy'-'MM'-'dd",
"yyyyMMddTHHmmss.fffffffK",
"yyyyMMddTHHmmss.ffffffK",
"yyyyMMddTHHmmss.fffffK",
@ -37,6 +41,7 @@ namespace Org.OpenAPITools.Client
"yyyyMMddTHHmmss.ffK",
"yyyyMMddTHHmmss.fK",
"yyyyMMddTHHmmssK",
"yyyyMMdd"
};
/// <summary>
@ -52,7 +57,7 @@ namespace Org.OpenAPITools.Client
string value = reader.GetString();
foreach(string format in FORMATS)
foreach(string format in Formats)
if (DateTime.TryParseExact(value, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, out DateTime result))
return result;
@ -70,7 +75,7 @@ namespace Org.OpenAPITools.Client
if (dateTimeValue == null)
writer.WriteNullValue();
else
writer.WriteStringValue(dateTimeValue.Value.ToString(FORMATS[0], CultureInfo.InvariantCulture));
writer.WriteStringValue(dateTimeValue.Value.ToString(Formats[0], CultureInfo.InvariantCulture));
}
}
}

View File

@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize DateOnlyProperty
/// </summary>
public string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd";
public static string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// A Json reader.
@ -150,7 +150,7 @@ namespace Org.OpenAPITools.Model
{
writer.WriteStartObject();
writer.WriteString("dateOnlyProperty", dateOnlyClass.DateOnlyProperty.ToString(this.DateOnlyPropertyFormat));
writer.WriteString("dateOnlyProperty", dateOnlyClass.DateOnlyProperty.ToString(DateOnlyPropertyFormat));
writer.WriteEndObject();
}

View File

@ -366,7 +366,12 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize Date
/// </summary>
public string DateFormat { get; set; } = "yyyy-MM-dd";
public static string DateFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// The format to use to serialize DateTime
/// </summary>
public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
@ -489,9 +494,8 @@ namespace Org.OpenAPITools.Model
JsonSerializer.Serialize(writer, formatTest.Binary, jsonSerializerOptions);
writer.WritePropertyName("byte");
JsonSerializer.Serialize(writer, formatTest.ByteProperty, jsonSerializerOptions);
writer.WriteString("date", formatTest.Date.ToString(this.DateFormat));
writer.WritePropertyName("dateTime");
JsonSerializer.Serialize(writer, formatTest.DateTime, jsonSerializerOptions);
writer.WriteString("date", formatTest.Date.ToString(DateFormat));
writer.WriteString("dateTime", formatTest.DateTime.ToString(DateTimeFormat));
writer.WritePropertyName("decimal");
JsonSerializer.Serialize(writer, formatTest.DecimalProperty, jsonSerializerOptions);
writer.WriteNumber("double", formatTest.DoubleProperty);

View File

@ -131,6 +131,11 @@ namespace Org.OpenAPITools.Model
/// </summary>
public class MixedPropertiesAndAdditionalPropertiesClassJsonConverter : JsonConverter<MixedPropertiesAndAdditionalPropertiesClass>
{
/// <summary>
/// The format to use to serialize DateTime
/// </summary>
public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
/// </summary>
@ -200,8 +205,7 @@ namespace Org.OpenAPITools.Model
{
writer.WriteStartObject();
writer.WritePropertyName("dateTime");
JsonSerializer.Serialize(writer, mixedPropertiesAndAdditionalPropertiesClass.DateTime, jsonSerializerOptions);
writer.WriteString("dateTime", mixedPropertiesAndAdditionalPropertiesClass.DateTime.ToString(DateTimeFormat));
writer.WritePropertyName("map");
JsonSerializer.Serialize(writer, mixedPropertiesAndAdditionalPropertiesClass.Map, jsonSerializerOptions);
writer.WriteString("uuid", mixedPropertiesAndAdditionalPropertiesClass.Uuid);

View File

@ -187,7 +187,12 @@ namespace Org.OpenAPITools.Model
/// <summary>
/// The format to use to serialize DateProp
/// </summary>
public string DatePropFormat { get; set; } = "yyyy-MM-dd";
public static string DatePropFormat { get; set; } = "yyyy-MM-dd";
/// <summary>
/// The format to use to serialize DatetimeProp
/// </summary>
public static string DatetimePropFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
@ -305,11 +310,13 @@ namespace Org.OpenAPITools.Model
else
writer.WriteNull("boolean_prop");
if (nullableClass.DateProp != null)
writer.WriteString("date_prop", nullableClass.DateProp.Value.ToString(this.DatePropFormat));
writer.WriteString("date_prop", nullableClass.DateProp.Value.ToString(DatePropFormat));
else
writer.WriteNull("date_prop");
writer.WritePropertyName("datetime_prop");
JsonSerializer.Serialize(writer, nullableClass.DatetimeProp, jsonSerializerOptions);
if (nullableClass.DatetimeProp != null)
writer.WriteString("datetime_prop", nullableClass.DatetimeProp.Value.ToString(DatetimePropFormat));
else
writer.WriteNull("datetime_prop");
if (nullableClass.IntegerProp != null)
writer.WriteNumber("integer_prop", nullableClass.IntegerProp.Value);
else

View File

@ -211,6 +211,11 @@ namespace Org.OpenAPITools.Model
/// </summary>
public class OrderJsonConverter : JsonConverter<Order>
{
/// <summary>
/// The format to use to serialize ShipDate
/// </summary>
public static string ShipDateFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK";
/// <summary>
/// A Json reader.
/// </summary>
@ -292,8 +297,7 @@ namespace Org.OpenAPITools.Model
writer.WriteNumber("id", order.Id);
writer.WriteNumber("petId", order.PetId);
writer.WriteNumber("quantity", order.Quantity);
writer.WritePropertyName("shipDate");
JsonSerializer.Serialize(writer, order.ShipDate, jsonSerializerOptions);
writer.WriteString("shipDate", order.ShipDate.ToString(ShipDateFormat));
var statusRawValue = Order.StatusEnumToJsonValue(order.Status);
if (statusRawValue != null)
writer.WriteString("status", statusRawValue);