.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Runtime.Serialization;
using System.Text.Json;
using System.Text.Json.Serialization;
					
public class Program
{
	private enum Status {
		Open,
		Closed,
		
		[EnumMember(Value = "NOT_AVAILABLE")]
		NotAvailable
	}
		
	private class MyJson {
	
		[JsonPropertyName("user_name")]
		public string UserName {get; set;} = string.Empty;
		
		[JsonConverter(typeof(JsonStringEnumConverter))]
		[JsonPropertyName("status")]
		public Status? Status {get; set;}
		
		public override string ToString() => $"{{UserName: {UserName}, Status: {Status}}}";
	}
	
	public static void Main()
	{
		string input;
		Object obj;
		
		input = @"{ ""user_name"": ""jdoe"", ""status"": ""CLOSED"" }";
		obj = JsonSerializer.Deserialize<MyJson>(input);
		Console.WriteLine($"Hello World, {obj}");
		
		Console.WriteLine("");
		
		input = @"{ ""user_name"": ""jdoe"", ""status"": ""NOT_AVAILABLE"" }";
		obj = JsonSerializer.Deserialize<MyJson>(input);
		Console.WriteLine($"Hello World, {obj}");
		
	}
}
;