| name | csharpessentials-json |
| description | Use when configuring System.Text.Json for ASP.NET Core — JsonOptions.Default with camelCase/no-nulls/no-cycles, ConditionalStringEnumConverter for [StringEnum] enums, MultiFormatDateTimeConverter for flexible date parsing, and PolymorphicJsonConverterFactory for $type discriminator. |
CSharpEssentials.Json
Pre-configured System.Text.Json options and converters for common ASP.NET Core patterns.
Installation
dotnet add package CSharpEssentials.Json
Namespace
using CSharpEssentials.Json;
JsonOptions.Default
Pre-configured profile: camelCase property names, ignore null values, handle circular references.
builder.Services.AddControllers()
.AddJsonOptions(o => o.JsonSerializerOptions.ApplyDefaults());
var json = JsonSerializer.Serialize(obj, JsonOptions.Default);
var obj = JsonSerializer.Deserialize<MyType>(json, JsonOptions.Default);
ConditionalStringEnumConverter
Serializes enums marked with [StringEnum] (from CSharpEssentials.Enums) as strings, and all other enums as integers.
options.Converters.Add(new ConditionalStringEnumConverter());
MultiFormatDateTimeConverter
Deserializes DateTime / DateTimeOffset from multiple input formats (ISO 8601, custom patterns). Useful when consuming third-party APIs with inconsistent date formats.
options.Converters.Add(new MultiFormatDateTimeConverter());
PolymorphicJsonConverterFactory
Enables polymorphic deserialization using a $type discriminator field.
options.Converters.Add(new PolymorphicJsonConverterFactory());
Best Practices
- Call
ApplyDefaults() in one place — do not configure JsonSerializerOptions in multiple locations
ConditionalStringEnumConverter requires enums to be decorated with [StringEnum] from CSharpEssentials.Enums
PolymorphicJsonConverterFactory requires the discriminator field to be named $type