using System.Collections.Generic;
using System.Text.Json.Serialization;
public static void Main()
var initial = new Ownership()
TextOutput = new List<string> { "hello", "goodbye" },
DateTime = DateTime.UtcNow,
MeanInterval = TimeSpan.FromHours(32)
Console.WriteLine("Initial: Total Days is {0}", initial.MeanInterval.TotalDays);
string json = JsonSerializer.Serialize(initial, new JsonSerializerOptions() { WriteIndented = false });
var deserialized = JsonSerializer.Deserialize<Ownership>(json);
Console.WriteLine("Deserialized: Total Days is {0}", deserialized.MeanInterval.TotalDays);
TestObject to = new TestObject()
WithAttribute = TimeSpan.FromSeconds(30),
WithoutAttribute = TimeSpan.FromSeconds(30)
string json = JsonSerializer.Serialize(to, new JsonSerializerOptions() { WriteIndented = true });
[JsonConverter(typeof(TimeSpanConverter))]
public TimeSpan WithAttribute {get;set;}
public TimeSpan WithoutAttribute {get;set;}
public string OwnershipId { get; set; }
public List<string> TextOutput { get; set; }
public DateTime DateTime { get; set; }
[JsonConverter(typeof(TimeSpanConverter))]
public TimeSpan MeanInterval { get; set; }
public class TimeSpanConverter : JsonConverter<TimeSpan>
public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
return TimeSpan.FromTicks(reader.GetInt64());
public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
writer.WriteNumberValue(value.Ticks);