无法使用JavaScriptDateTimeConverter解析数据

时间:2010-11-02 10:17:08

标签: c# json json.net

我尝试使用Json.net解析简单的JSON

 string inputJson = @"
                {
                 ""modificationTime"" : ""\/Date(1224043200000)\/""
                 }";

定义属性

[JsonProperty("modificationTime")]
[JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime ModificationTime { get; set; }

但是DeserializeObject使用以下消息抛出异常: “解析日期时出现意外的标记或值。令牌:日期,值:10/15/2008 04:00:00”

嗯,据我所知它实际上已经解析了日期,不是吗? 从JavaScriptDateTimeConverter.cs中的第68行抛出此异常:

68 if (reader.TokenType != JsonToken.StartConstructor ||  string.Compare(reader.Value.ToString(), "Date", StringComparison.Ordinal) != 0)
69            throw new Exception("Unexpected token or value when parsing date. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value));
70    
71          reader.Read();

在这个地方reader.TokenType是Date和reader.Value.ToString()是10/15/2008 04:00:00。 有什么想法吗?

2 个答案:

答案 0 :(得分:6)

Json.NET使用以下格式对日期进行反序列化:

"\/Date(1224043200000)\/"

默认情况下。 JavaScriptDateTimeConverter用于格式为的日期:

new Date(1234567890)

答案 1 :(得分:0)

前段时间我遇到过类似的问题。我找到了一个解决方法,并在博客上写了一篇文章:

http://shico.blogspot.com/2010/07/ajaxpro-deserialize-json-datetime.html

希望它有所帮助。