从 JObject JSON.Net 读取日期

KCI*_*ing 2 c# json.net

我想动态读取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");
Run Code Online (Sandbox Code Playgroud)

在快速观看中,日期看起来像

在此处输入图片说明 所以我尝试了约会时间但没有运气。如果我能得到字符串值,我发现了一个不同的 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;

    }
Run Code Online (Sandbox Code Playgroud)

每条评论,异常由

data.startTime = (obj["startTime"].Value<DateTime>());
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

use*_*994 7

您可以使用SelectToken来读取日期。

var jToken = obj.SelectToken("startTime.$date");
var date = jToken.Value<DateTime>();
Run Code Online (Sandbox Code Playgroud)

检查这个现场小提琴 - 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 小提琴已被不相关的内容覆盖:-( (3认同)