using System.Collections;
using System.Collections.Generic;
using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
using System.Text.Json.Nodes;
public enum FirstEnum { }
public enum SecondEnum { }
public class SnakeCaseLowerStringEnumConverter<TEnum>()
: JsonStringEnumConverter<TEnum>(JsonNamingPolicy.SnakeCaseLower)
where TEnum : struct, Enum;
[JsonSourceGenerationOptions(
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
PropertyNamingPolicy = JsonKnownNamingPolicy.SnakeCaseLower,
typeof(SnakeCaseLowerStringEnumConverter<FirstEnum>),
typeof(SnakeCaseLowerStringEnumConverter<SecondEnum>),
typeof(SnakeCaseLowerStringEnumConverter<LastEnum>)})]
[JsonSerializable(typeof(FirstEnum)),
JsonSerializable(typeof(SecondEnum)),
JsonSerializable(typeof(LastEnum))]
[JsonSerializable(typeof(MyModel)),]
public partial class SnakeCaseLowerContext : JsonSerializerContext { }
public static void Test()
public static void Main()
Console.WriteLine("Environment version: {0} ({1}), {2}", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("System.Text.Json version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");