我做了很多搜索,但没有提出任何可以解释我的问题的东西,我无疑是微不足道的。
我已从NuGet将Json.NET 12.0.1导入到我的项目中。
在下面的代码行中
Console.WriteLine(json.Value<DateTimeOffset>("DateTime"));
抛出
从“ System.DateTime”到“ System.DateTimeOffset”的无效转换
例外,如评论所述。
所以,为什么我可以显式投射
json["DateTime"]
或json.Value<DateTime>("DateTime")
至DateTimeOffset
但不使用json.Value<DateTimeOffset>("DateTime")
?
using Newtonsoft.Json.Linq;
using System;
namespace JSONDates
{
class Program
{
static void Main(string[] args)
{
string dt = "2019-04-21T18:27:21.225+01:00";
string jsonString = string.Format("{{\"DateTime\": \"{0}\"}}", dt);
JObject json = JObject.Parse(jsonString);
Console.WriteLine(json.Value<DateTime>("DateTime")); //OK
Console.WriteLine((DateTimeOffset)json.Value<DateTime>("DateTime")); //OK
Console.WriteLine(((DateTimeOffset)json["DateTime"])); //OK
Console.WriteLine(json.Value<DateTimeOffset>("DateTime")); //{"Invalid cast from 'System.DateTime' to 'System.DateTimeOffset'."}
Console.ReadLine();
}
}
}