2010-11-02 15 views
5

Trato de analizar JSON simple usando Json.netno puede analizar los datos usando JavaScriptDateTimeConverter

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

y la propiedad es definida

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

Pero DeserializeObject lanzar una excepción con el siguiente mensaje: "Token inesperado o valor al analizar la fecha Token: Date, Value: 10/15/2008 04:00:00"

Bueno, por lo que veo, en realidad ha analizado el fecha, ¿no es así? Esta excepción se produce a partir de la línea 68 en las JavaScriptDateTimeConverter.cs:

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(); 

En este lugar es reader.TokenType Fecha y reader.Value.ToString() es 10/15/2008 04:00:00. Alguna idea?

Respuesta

6

Json.NET deserializa fechas con el formato:

"\/Date(1224043200000)\/" 

por defecto. JavaScriptDateTimeConverter es para las fechas con el formato:

new Date(1234567890) 
+0

muchas gracias. Es tan inteligente que no lo puedo creer)) –

0

Tuve un problema similar hace algún tiempo. He encontrado una solución y escribió en su blog sobre él:

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

espero que ayude.

+0

No, no es así. Escribió que si es "/ Date (1224043200000) /" no funcionará. Mientras uso "" \/Date (1224043200000) \/"". Supongo que el problema es el lector. TokenType debería ser JsonToken.StartConstructor. Y probablemente significa que "\/se analiza como este token. –

Cuestiones relacionadas