无法将JSON数据解析为.NET DateTime

时间:2016-09-23 21:02:47

标签: c# json json.net

这很简单。我有一个字符串

string s = "/Date(1474408920000)/"

我想把它转换成日期:

DateTime date = JsonConvert.DeserializeObject<DateTime>(s);

但我收到错误:

“解析评论时出错。预计:*,得到D.路径'',第1行,第1位。”

这里发生了什么?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您的json字符串无效,但可以通过"

包围它来轻松修复
string s = @"""/Date(1474408920000)/""";

现在DateTime date = JsonConvert.DeserializeObject<DateTime>(s);可以使用

答案 1 :(得分:0)

        var LogDate = new DateTime(2016, 9, 20, 22, 2, 0, DateTimeKind.Utc);

        string JsonDate = JsonConvert.SerializeObject(LogDate, new JsonSerializerSettings {
            DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
        });

        Console.WriteLine(JsonDate);
        Console.ReadLine();

此代码的输出为您提供了正确的JSON日期格式:

"\/Date(1474408920000)\/"

所以你的字符串应该是这样的:

string s = "\"\\/Date(1474408920000)\\/\"";

答案 2 :(得分:0)

尝试使用以下代码将DateTime obj序列化为JSON。

        var dateTime = DateTime.Now;
        var jsonDate = Newtonsoft.Json.JsonConvert.SerializeObject(dateTime, 
                            new Newtonsoft.Json.JsonSerializerSettings() { 
                                DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat, 
                                DateParseHandling = Newtonsoft.Json.DateParseHandling.DateTime });

jsonDate会保留此值"\"\\/Date(1474408920000)\\/\""或此格式的内容 现在使用下面的代码反序列化你的json日期字符串。

var dateObj = Newtonsoft.Json.JsonConvert.DeserializeObject<DateTime>(dateString, 
                            new Newtonsoft.Json.JsonSerializerSettings() { 
                                DateParseHandling = Newtonsoft.Json.DateParseHandling.DateTime, 
                                DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat });