SkillAgentSearch skills...

System.Text.Json.EnumExtensions

An extended version from the JsonStringEnumConverter which supports attributes like EnumMember, Display and Description

Install / Use

/learn @StefH/System.Text.Json.EnumExtensions
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

System.Text.Json.Extensions

Some extensions to the JsonStringEnumConverter which supports attributes like EnumMember, Display and Description

Info

| | | |-|-| |   Build Azure | Build Status | |   NuGet | NuGet: EnumExtensions.System.Text.Json |   MyGet (preview) | MyGet: EnumExtensions.System.Text.Json |

Installing

You can install from NuGet using the following command in the package manager window:

Install-Package EnumExtensions.System.Text.Json

Or via the Visual Studio NuGet package manager.

If you use the dotnet command:

dotnet add package EnumExtensions.System.Text.Json

Option 1: Usage Example - EnumMember

Define Enum and add attributes

Define an Enum and annotate the Enum fields with the EnumMemberAttribute:

enum WeatherType
{
    [EnumMember(Value = "Zonnig")]
    Sunny,

    [EnumMember(Value = "Helder")]
    Clear
}

Add Converter

Add the new JsonStringEnumConverterWithAttributeSupport to the Converters via the JsonSerializerOptions:

var options = new JsonSerializerOptions();
options.Converters.Add(new JsonStringEnumConverterWithAttributeSupport());

Serialize an object

var weatherForecast = new WeatherForecast
{
    WeatherType = WeatherType.Sunny
};

var weatherForecastSerialized = JsonSerializer.Serialize(weatherForecast, options);
Console.WriteLine(weatherForecastSerialized); // {"WeatherType":"Zonnig"}

Deserialize an object

Deserialize works by using the same options:

var json = "{\"WeatherType\":\"Zonnig\"}";
var weatherForecastDeserialized = JsonSerializer.Deserialize<WeatherForecast>(json, options);

Option 2: Usage Example - EnumMember

It's also possible to annotate the Enum with a [JsonConverter] so that you don't need to manually registerd the JsonStringEnumConverterWithAttributeSupport to the Converters via the JsonSerializerOptions.

Define Enum and add attributes

Define an Enum

  • add the [JsonConverter(typeof(JsonStringEnumConverterWithAttributeSupport))] to the Enum
  • annotate the Enum fields with the EnumMemberAttribute:
[JsonConverter(typeof(JsonStringEnumConverterWithAttributeSupport))]
enum WeatherType
{
    [EnumMember(Value = "Zonnig")]
    Sunny,

    [EnumMember(Value = "Helder")]
    Clear
}

Generic Attribute is also supported:

[JsonConverter(typeof(JsonStringEnumConverterWithAttributeSupport<WeatherType>))]
enum WeatherType
{
    [EnumMember(Value = "Zonnig")]
    Sunny,
    [EnumMember(Value = "Helder")]
    Clear
}

Serializing and Deserialize an object

This works the same as using Option 1.

Note that only Enum values which are annotated with EnumMember are supported.

Usage Example - Display and Description

It's also possible to annotate Enum fields with these attributes:

Define Enum and add attributes

enum WeatherType
{
    [EnumMember(Value = "Zonnig")]
    Sunny,

    [Display(Name = "Helder")]
    Clear,

    [Description("Bewolkt")]
    Cloudy
}

Add Converter

! By default, the Display and Description are disabled, use the following line to enable these.

var options = new JsonSerializerOptions();
options.Converters.Add(new JsonStringEnumConverterWithAttributeSupport(null, true, true, true, true));

Serializing and Deserializing works the same.

Sponsors

Entity Framework Extensions and Dapper Plus are major sponsors and proud to contribute to the development of System.Text.Json.Extensions.

Entity Framework Extensions

Dapper Plus

Related Skills

View on GitHub
GitHub Stars29
CategoryCustomer
Updated5mo ago
Forks4

Languages

C#

Security Score

87/100

Audited on Oct 13, 2025

No findings