与 BCL 的 DateTime 相比,我正在制作 NodaTime 的原型项目,但执行此结果会给我 recursionLimit 超出错误。
这是我用来 JSON 化我的视图模型的函数。此函数返回后发生错误。
[HttpPost]
public JsonResult GetDates(int numOfDatesToRetrieve)
{
List<DateTimeModel> dateTimeModelList = BuildDateTimeModelList(numOfDatesToRetrieve);
JsonResult result = Json(dateTimeModelList, JsonRequestBehavior.AllowGet);
return result;
}
当我检查它时,我的视图模型是正确构建的。这是我的视图模型的代码。
public class DateTimeModel
{
public int ID;
public LocalDateTime NodaLocalDateTimeUTC;
public LocalDateTime NodaLocalDateTime
{
get
{
DateTimeZone dateTimeZone = DateTimeZoneProviders.Bcl.GetZoneOrNull(BCLTimezoneID);
//ZonedDateTime zonedDateTime = NodaLocalDateTimeUTC.InUtc().WithZone(dateTimeZone);
OffsetDateTime offsetDateTime = new OffsetDateTime(NodaLocalDateTimeUTC, Offset.Zero);
ZonedDateTime zonedDateTime = new ZonedDateTime(offsetDateTime.ToInstant(), dateTimeZone);
return zonedDateTime.LocalDateTime;
}
}
public OffsetDateTime NodaOffsetDateTime;
public DateTime BclDateTimeUTC;
public DateTime BclLocalDateTime
{
get
{
DateTime utcDateTime = DateTime.SpecifyKind(BclDateTimeUTC, DateTimeKind.Utc);
TimeZoneInfo nzTimeZone = TimeZoneInfo.FindSystemTimeZoneById(BCLTimezoneID);
DateTime result = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, nzTimeZone);
return result;
}
}
public DateTimeOffset BclDateTimeOffset;
//public int Offset;
public string OriginalDateString;
public string BCLTimezoneID;
}
我确信 NodaTime 对象没有正确序列化,因为当我从 viewModel 注释代码时,JsonResult 能够执行。
我从这个页面上读到了这个NodaTime API Reference
此命名空间中的代码当前不包含在 Noda Time NuGet 包中;它仍然被认为是“实验性的”。要使用这些序列化程序,请从项目主页下载并构建 Noda Time 源代码。
所以我下载并构建了源代码并替换了我的项目引用的 dll,但我不知道如何实现 JsonSerialization 类。
有人可以向我解释如何使用 NodaTime.Serialization.JsonNet 类使我的 NodaTime 对象可序列化吗?