From 7c57024e695b4bd49a5d320b2f2ef209faad5a01 Mon Sep 17 00:00:00 2001 From: devhl-labs Date: Wed, 15 Feb 2023 10:46:48 -0500 Subject: [PATCH] improved date de/serialization (#14679) --- .../generichost/DateTimeFormats.mustache | 4 +++- .../DateTimeJsonConverter.mustache | 9 ++++--- .../DateTimeNullableJsonConverter.mustache | 9 ++++--- .../generichost/JsonConverter.mustache | 24 +++++++++++++++---- .../Client/DateTimeJsonConverter.cs | 11 ++++++--- .../Client/DateTimeNullableJsonConverter.cs | 11 ++++++--- .../Org.OpenAPITools/Model/DateOnlyClass.cs | 4 ++-- .../src/Org.OpenAPITools/Model/FormatTest.cs | 12 ++++++---- ...dPropertiesAndAdditionalPropertiesClass.cs | 8 +++++-- .../Org.OpenAPITools/Model/NullableClass.cs | 15 ++++++++---- .../src/Org.OpenAPITools/Model/Order.cs | 8 +++++-- .../Client/DateTimeJsonConverter.cs | 11 ++++++--- .../Client/DateTimeNullableJsonConverter.cs | 11 ++++++--- .../Org.OpenAPITools/Model/DateOnlyClass.cs | 4 ++-- .../src/Org.OpenAPITools/Model/FormatTest.cs | 12 ++++++---- ...dPropertiesAndAdditionalPropertiesClass.cs | 8 +++++-- .../Org.OpenAPITools/Model/NullableClass.cs | 15 ++++++++---- .../src/Org.OpenAPITools/Model/Order.cs | 8 +++++-- .../Client/DateTimeJsonConverter.cs | 11 ++++++--- .../Client/DateTimeNullableJsonConverter.cs | 11 ++++++--- .../Client/DateTimeJsonConverter.cs | 11 ++++++--- .../Client/DateTimeNullableJsonConverter.cs | 11 ++++++--- .../Client/DateTimeJsonConverter.cs | 11 ++++++--- .../Client/DateTimeNullableJsonConverter.cs | 11 ++++++--- .../Client/DateTimeJsonConverter.cs | 11 ++++++--- .../Client/DateTimeNullableJsonConverter.cs | 11 ++++++--- .../Org.OpenAPITools/Model/DateOnlyClass.cs | 4 ++-- .../src/Org.OpenAPITools/Model/FormatTest.cs | 12 ++++++---- ...dPropertiesAndAdditionalPropertiesClass.cs | 8 +++++-- .../Org.OpenAPITools/Model/NullableClass.cs | 15 ++++++++---- .../src/Org.OpenAPITools/Model/Order.cs | 8 +++++-- 31 files changed, 229 insertions(+), 90 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeFormats.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeFormats.mustache index 4a24ef29b6e..c8887e20859 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeFormats.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeFormats.mustache @@ -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", @@ -13,4 +14,5 @@ "yyyyMMddTHHmmss.fffK", "yyyyMMddTHHmmss.ffK", "yyyyMMddTHHmmss.fK", - "yyyyMMddTHHmmssK", \ No newline at end of file + "yyyyMMddTHHmmssK", + "yyyyMMdd" \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeJsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeJsonConverter.mustache index bdf2b8c1cc8..55ecf4a1660 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeJsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeJsonConverter.mustache @@ -12,7 +12,10 @@ namespace {{packageName}}.{{clientPackage}} /// {{>visibility}} class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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}} /// /// 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)); } } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeNullableJsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeNullableJsonConverter.mustache index 224dd044c3f..f052afa1491 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeNullableJsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/DateTimeNullableJsonConverter.mustache @@ -12,7 +12,10 @@ namespace {{packageName}}.{{clientPackage}} /// {{>visibility}} class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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)); } } } diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/JsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/JsonConverter.mustache index 4fc1bd336f2..33d337de59e 100644 --- a/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/JsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp-netcore/libraries/generichost/JsonConverter.mustache @@ -4,11 +4,18 @@ {{>visibility}} class {{classname}}JsonConverter : JsonConverter<{{classname}}> { {{#allVars}} + {{#isDateTime}} + /// + /// The format to use to serialize {{name}} + /// + public static string {{name}}Format { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + + {{/isDateTime}} {{#isDate}} /// /// The format to use to serialize {{name}} /// - 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}} diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs index a86c694664d..bb0457c6e9d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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 /// /// 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)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs index abf780dcd83..d3a7b947bc7 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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)); } } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/DateOnlyClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/DateOnlyClass.cs index bc2dfcee831..4ed685bcfd4 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/DateOnlyClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/DateOnlyClass.cs @@ -93,7 +93,7 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize DateOnlyProperty /// - public string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd"; + public static string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd"; /// /// 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(); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/FormatTest.cs index b32ccd448a6..81c3bb07625 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/FormatTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/FormatTest.cs @@ -368,7 +368,12 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize Date /// - public string DateFormat { get; set; } = "yyyy-MM-dd"; + public static string DateFormat { get; set; } = "yyyy-MM-dd"; + + /// + /// The format to use to serialize DateTime + /// + public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; /// /// 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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs index 1e9d78c798c..2b338b9ac91 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs @@ -133,6 +133,11 @@ namespace Org.OpenAPITools.Model /// public class MixedPropertiesAndAdditionalPropertiesClassJsonConverter : JsonConverter { + /// + /// The format to use to serialize DateTime + /// + public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + /// /// A Json reader. /// @@ -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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/NullableClass.cs index c3c478cd7ce..90755599f3a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/NullableClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/NullableClass.cs @@ -189,7 +189,12 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize DateProp /// - public string DatePropFormat { get; set; } = "yyyy-MM-dd"; + public static string DatePropFormat { get; set; } = "yyyy-MM-dd"; + + /// + /// The format to use to serialize DatetimeProp + /// + public static string DatetimePropFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; /// /// 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 diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/Order.cs index 3604eb593b5..a6661816f69 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/Order.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt/src/Org.OpenAPITools/Model/Order.cs @@ -213,6 +213,11 @@ namespace Org.OpenAPITools.Model /// public class OrderJsonConverter : JsonConverter { + /// + /// The format to use to serialize ShipDate + /// + public static string ShipDateFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + /// /// A Json reader. /// @@ -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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs index 47daa5b77e5..6222464831d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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 /// /// 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)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs index 02d9e10ba7e..4e53bbe9557 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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)); } } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs index f1f557e110e..eaf1ee5431b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize DateOnlyProperty /// - public string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd"; + public static string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd"; /// /// 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(); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/FormatTest.cs index 562ec43b72e..795e741d1a1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/FormatTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/FormatTest.cs @@ -366,7 +366,12 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize Date /// - public string DateFormat { get; set; } = "yyyy-MM-dd"; + public static string DateFormat { get; set; } = "yyyy-MM-dd"; + + /// + /// The format to use to serialize DateTime + /// + public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; /// /// 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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs index a2c31499e85..30821d80580 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs @@ -131,6 +131,11 @@ namespace Org.OpenAPITools.Model /// public class MixedPropertiesAndAdditionalPropertiesClassJsonConverter : JsonConverter { + /// + /// The format to use to serialize DateTime + /// + public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + /// /// A Json reader. /// @@ -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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/NullableClass.cs index 95eb77f00be..fe0f847dc9d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/NullableClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/NullableClass.cs @@ -187,7 +187,12 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize DateProp /// - public string DatePropFormat { get; set; } = "yyyy-MM-dd"; + public static string DatePropFormat { get; set; } = "yyyy-MM-dd"; + + /// + /// The format to use to serialize DatetimeProp + /// + public static string DatetimePropFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; /// /// 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 diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/Order.cs index a6c63e956e6..00738d9c335 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/Order.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0/src/Org.OpenAPITools/Model/Order.cs @@ -211,6 +211,11 @@ namespace Org.OpenAPITools.Model /// public class OrderJsonConverter : JsonConverter { + /// + /// The format to use to serialize ShipDate + /// + public static string ShipDateFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + /// /// A Json reader. /// @@ -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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs index 96237155e83..0083ee7169a 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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 /// /// 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)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs index 22311607841..95546974e1e 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-allOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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)); } } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs index 3b409a01d26..ba2d0c137ba 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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 /// /// 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)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs index d31b408d40b..1bc64cb2496 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-anyOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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)); } } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs index 3b409a01d26..ba2d0c137ba 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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 /// /// 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)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs index d31b408d40b..1bc64cb2496 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netcore-latest-oneOf/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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)); } } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs index 47daa5b77e5..6222464831d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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 /// /// 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)); } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs index 02d9e10ba7e..4e53bbe9557 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs @@ -20,7 +20,10 @@ namespace Org.OpenAPITools.Client /// public class DateTimeNullableJsonConverter : JsonConverter { - public static readonly string[] FORMATS = { + /// + /// The formats used to deserialize the date + /// + 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" }; /// @@ -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)); } } } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs index f1f557e110e..eaf1ee5431b 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/DateOnlyClass.cs @@ -91,7 +91,7 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize DateOnlyProperty /// - public string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd"; + public static string DateOnlyPropertyFormat { get; set; } = "yyyy-MM-dd"; /// /// 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(); } diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/FormatTest.cs index 562ec43b72e..795e741d1a1 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/FormatTest.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/FormatTest.cs @@ -366,7 +366,12 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize Date /// - public string DateFormat { get; set; } = "yyyy-MM-dd"; + public static string DateFormat { get; set; } = "yyyy-MM-dd"; + + /// + /// The format to use to serialize DateTime + /// + public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; /// /// 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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs index a2c31499e85..30821d80580 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs @@ -131,6 +131,11 @@ namespace Org.OpenAPITools.Model /// public class MixedPropertiesAndAdditionalPropertiesClassJsonConverter : JsonConverter { + /// + /// The format to use to serialize DateTime + /// + public static string DateTimeFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + /// /// A Json reader. /// @@ -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); diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/NullableClass.cs index 95eb77f00be..fe0f847dc9d 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/NullableClass.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/NullableClass.cs @@ -187,7 +187,12 @@ namespace Org.OpenAPITools.Model /// /// The format to use to serialize DateProp /// - public string DatePropFormat { get; set; } = "yyyy-MM-dd"; + public static string DatePropFormat { get; set; } = "yyyy-MM-dd"; + + /// + /// The format to use to serialize DatetimeProp + /// + public static string DatetimePropFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; /// /// 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 diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/Order.cs index a6c63e956e6..00738d9c335 100644 --- a/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/Order.cs +++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0/src/Org.OpenAPITools/Model/Order.cs @@ -211,6 +211,11 @@ namespace Org.OpenAPITools.Model /// public class OrderJsonConverter : JsonConverter { + /// + /// The format to use to serialize ShipDate + /// + public static string ShipDateFormat { get; set; } = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK"; + /// /// A Json reader. /// @@ -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);