我在通过 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,但反序列化为以下内容,本地时间表示为滴答;
{ “示例本地时间”:{ “刻度”:553800000000 }
在反序列化和序列化时,我需要添加什么来避免 Ticks?
最佳答案
Noda Time 有一个额外的 NuGet 包可用于 JSON.Net 序列化。
PM> Install-Package NodaTime.Serialization.JsonNet
要使用它,只需调用它的配置扩展方法:
var jsonsettings = new JsonSerializerSettings()
jsonsettings.ConfigureForNodaTime();
您可以阅读更多相关信息 in the Noda Time user guide (大约在页面的一半)。
关于c# - 通过 WebAPI 正确序列化 LocalTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476998/