Deserializing Newton.Json date with System.Text.Json

CSharp · Console

/Program.cs

using System;
using System.Text.Json;
using System.Text.Json.Serialization;
					
public class Program
{
	public static void Main()
	{
        string s = "\"/Date(1573581177000)/\"";
		var deserializeOptions = new JsonSerializerOptions();
        deserializeOptions.Converters.Add(new DateTimeConverter());
		DateTime dt = JsonSerializer.Deserialize<DateTime>(s, deserializeOptions);
		Console.WriteLine(dt);
	}
	
}

public class DateTimeConverter : JsonConverter<DateTime>
{

    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
	    var s = reader.GetString();
		s=s.Replace("/Date(","");
		s=s.Replace(")/","");
		long epoch = Convert.ToInt64(s);
		DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(epoch);
        return dateTimeOffset.UtcDateTime;
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
    {
		// Do some conversion here
    }
}

;