System Text JsonSerializer Deserialization of TimeSpan

asked6 years ago
last updated6 years ago
viewed9.5k times
Up Vote14Down Vote

In researching how to deserialize a TimeSpan using Newtonsoft's JSON.net I came across code in my current project that did not use Json.net. It used System.Text.Json.JsonSerializer and to not fail on the operation of deserializing the TimeSpan property, .

Great I thought, has surpassed the issue of deserializing a TimeSpan and all is good. So fired up a test case in the latest version of Linqpad 6 (which uses .NET Core) to verify and to my chagrin it failed.


So the question is, can the TimeSpan be serialized/deserialized using either library ()… or is my test case below flawed in some respect?


public class Project { public TimeSpan AverageScanTime { get; set; } }
var newP = new Project() { AverageScanTime = TimeSpan.FromHours(1) };

newP.Dump("New one");

var json = System.Text.Json.JsonSerializer.Serialize(newP);

json.Dump("JSON serialized");

System.Text.Json.JsonSerializer.Deserialize<Project>(json)
                               .Dump("JSON Deserialize");