我无法通过WebAPI对NodaTime的LocalTime进行序列化和反序列化。
班级定义
public class ExampleClass
{
public LocalTime ExampleLocalTime { get; set; }
}
尝试序列化输出
// create example object
var exampleclass = new ExampleClass()
{
ExampleLocalTime = new LocalTime(DateTime.Now.Hour, DateTime.Now.Minute)
};
// serialise output
var jsonsettings = new JsonSerializerSettings()
{
DateParseHandling = DateParseHandling.None,
NullValueHandling = NullValueHandling.Ignore
};
jsonsettings.Converters.Add(new IsoDateTimeConverter());
string exampleoutput = JsonConvert.SerializeObject(exampleclass, Formatting.Indented, jsonsettings);
我想将格式化的时间格式化为ISO标准,例如12:34:53,而是将反序列化器转换为以下,并将当地时间表示为刻度;
{ " ExampleLocalTime":{ " ticks":553800000000 } }
在反序列化和序列化时,我需要添加什么来避免 Ticks ?
答案 0 :(得分:5)
Noda Time有一个额外的NuGet包可用于JSON.Net序列化。
PM> Install-Package NodaTime.Serialization.JsonNet
要使用它,只需调用其配置扩展方法:
var jsonsettings = new JsonSerializerSettings()
jsonsettings.ConfigureForNodaTime();
您可以阅读有关它的更多信息in the Noda Time user guide(大约在页面的一半)。