Как десериализовать дату в строке JSON - PullRequest
2 голосов
/ 10 июня 2011

Я пытаюсь десериализовать следующую строку JSON:

{
    "id":"4711363275",
    "owner":"51262181@N07",
    "datetaken":"2010-06-10 11:34:35",
    "ownername":"tlamy",
    "latitude":48.85959,
    "longitude":2.291872
}

Ниже приведен код F #:

[<DataContract>]
type photo = {
        [<field: DataMember(Name = "id")>]
        photo_id:int64
        [<field: DataMember(Name = "owner")>]
        owner:string
        [<field: DataMember(Name = "datetaken")>]
        datetaken:DateTime
        [<field: DataMember(Name = "latitude")>]
        latitude:float
        [<field: DataMember(Name = "longitude")>]
        longitude:float
}

let internal unjson<'t> (jsonString:string)  : 't =  
    use ms = new MemoryStream(ASCIIEncoding.Default.GetBytes(jsonString)) 
    let obj = (new DataContractJsonSerializer(typeof<'t>)).ReadObject(ms) 
    obj :?> 't
let decodePhoto = unjson<photo>

У меня проблема с полем даты, код выше выдает ошибку десериализации. Как указать формат строки даты для анализа?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 10 июня 2011
0 голосов
/ 10 июня 2011

Не уверен, но вы можете использовать для этого интерфейс IDeserializationCallback или атрибут OnDeserializing ?

...