繁体   English   中英

从JObject JSON.Net读取日期

[英]Read date from JObject 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");

在速记中,日期看起来像

在此输入图像描述 所以我试着没有运气的约会时间。 如果我能得到字符串值,我发现了一个不同的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>());

在此输入图像描述

您可以使用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");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM