using SystemJson = System.Text.Json;
using SystemJsonSerialization = System.Text.Json.Serialization;
using NJson = Newtonsoft.Json;
using NJsonConv = Newtonsoft.Json.Converters;
public record TestRecord(TestEnum Test);
public static void Main()
ParseTestRecordSystemText("{\"test\":\"first\"}");
ParseTestRecordSystemText("{\"test\":\"Second\"}");
ParseTestRecordSystemText("{\"test\":3}");
ParseTestRecordNewtonsoft("{\"test\":\"first\"}");
ParseTestRecordNewtonsoft("{\"test\":\"Second\"}");
ParseTestRecordNewtonsoft("{\"test\":3}");
private static void ParseTestRecordSystemText(string jsonString)
var serializeOptions = new SystemJson.JsonSerializerOptions
PropertyNamingPolicy = SystemJson.JsonNamingPolicy.CamelCase,
new SystemJsonSerialization.JsonStringEnumConverter(SystemJson.JsonNamingPolicy.CamelCase)
var testRecord = SystemJson.JsonSerializer.Deserialize<TestRecord>(jsonString, serializeOptions);
Console.WriteLine(testRecord.Test);
private static void ParseTestRecordNewtonsoft(string jsonString)
var converter = new NJsonConv.StringEnumConverter();
var testRecord = NJson.JsonConvert.DeserializeObject<TestRecord>(jsonString, converter);
Console.WriteLine(testRecord.Test);