c# - JSON.NET 未将 ISO 8601 时间转换为 Noda Time Instant
问题描述
下面代码的输出是1970-01-01T00:00:00Z
而不是2021-09-20T19:43:15Z
. 我究竟做错了什么?我正在使用 3.0.5NodaTime
版和 3.0.0 版NodaTime.Serialization.JsonNet
。
class Program
{
class Foo
{
[JsonProperty("time")]
public Instant Time { get; }
}
static void Main(string[] args)
{
const string json = "{\"time\": \"2021-09-20T19:43:15.204Z\"}";
var foo = JsonConvert.DeserializeObject<Foo>(json,
new JsonSerializerSettings().ConfigureForNodaTime(DateTimeZoneProviders.Tzdb));
Console.WriteLine(foo.Time);
}
}
谢谢你的帮助,
杰克
解决方案
您的Time
财产只有一个“getter”——没有 setter。只需将属性更改为也有一个 setter:
[JsonProperty("time")]
public Instant Time { get; set; }
推荐阅读
- python - Python在文本文件中进行数字排序
- javascript - 异步登录谷歌地图脚本
- html - IMG Modal 仅适用于第一张图片
- angular - 您可以将 Angular 组件导出到 Sketch 中吗?
- css - 列表的六边形形状有缺陷 css
- java - 使用 Jsoup 抓取带有加载图像的网页?
- mysql - 循环唯一插入临时表MySql存储过程
- c# - 需要正则表达式来获取 Anchor id
- typescript - 单击按钮时,EventListener 会工作一次
- javascript - Javascript:为什么我不能使用“this”关键字从函数内部访问添加到全局对象的属性?