c# - 通过 WebAPI 正确序列化 LocalTime

标签 c# asp.net-web-api json.net nodatime

我在通过 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/

相关文章:

asp.net-web-api - 我可以在 WebAPI messageHandler 中使用 Autofac DI 吗?

vb.net - 使用Code-First进行Update-Database时出错:“数据库中已经存在一个名为'something'的对象。”

asp.net-mvc - 将 IQueryable 泛型转换为 JSON

c# - 如何为特定类型而不是全局设置 Json.NET ContractSerializer?

c# - 是否可以在 C# 中使用 Moq 从另一个模拟返回一个模拟?

c# - 为 Windows Phone 库解决方案运行单元测试

c# - Asp.net 核心 MVC 依赖注入(inject) - 构造函数中的必需属性?

c# - 如何在 Forms.Authentication 和 ReturnUrl 之间插入确认对话框?

c# - 序列化时出现 JSON .Net Windows Mobile 错误

c# - WebApi Controller 返回空数据