我想动态读取json。除了约会,我一切正常。所以我有
JObject obj = JObject.Load(reader);
data.location= (obj["duration"].Value<double>());
data.deviceID = (obj["deviceID"].Value<string>());
data.reason= (obj["reason"].Value<string>());
data.id= (obj["id"].Value<string>());
// data.startTime=(obj["startTime"].Value<DateTime>());
string start = (string)obj.SelectToken("startTime");
在快速监视中,日期看起来像
所以我尝试约会的时候没有运气。如果我可以获取字符串值,我发现了另一个使用此方法的stackoverflow帖子。但是我还不能很好地阅读它
private DateTime TryParseIso8601(string s)
{
string format = s.EndsWith("Z") ? "yyyy-MM-ddTHH:mm:ssZ" : "yyyy-MM-ddTHH:mm:sszzz";
DateTime date = new DateTime();
DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out date);
return date;
}
每个注释,由
生成的异常data.startTime = (obj["startTime"].Value<DateTime>());
答案 0 :(得分:2)
您可以使用SelectToken
来读取日期。
var jToken = obj.SelectToken("startTime.$date");
var date = jToken.Value<DateTime>();
查看此现场小提琴-https://dotnetfiddle.net/9o4FJt
示例代码:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
var jsonString = "{\"startTime\" : { \"$date\" : \"2018-03-19T19:38:02.929Z\"} }";
var jObj = JsonConvert.DeserializeObject<JObject>(jsonString);
Console.WriteLine(jObj);
var jToken = jObj.SelectToken("startTime.$date");
Console.WriteLine(jToken.Value<DateTime>());
Console.WriteLine("Hello World");
}
}