2016-07-19 87 views
2

我開始使用Json.net來解析帶有日期值的Json字符串。日期一切安好。到目前爲止,我已經無法JValue轉換爲.NET日期時間,即使使用DateTime.Parse方法,因爲Json.NET似乎解析日期,一個不尋常的格式,它看起來像這樣Json.net不正確的日期時間格式

"Wed Jul 20 16:00:00 CEST 2016" 

我設法重新格式化並使用正則表達式解析日期,但爲了將來的使用,我想學習正確使用Json.net,而不是重新發明輪子。

的JSON字符串如下

{ 
"totalCount": 5, 
"avis": [{ 
    "idDossier": 422271, 
    "typeDocDCE": 1, 
    "dcevisible": 0, 
    "organisme": "OPAC du Rhône", 
    "idOrganisme": 5687, 
    "reference": "16S0012", 
    "idTypeProcedure": 68, 
    "typeProcedure": "Procédure adaptée", 
    "idTypeMarche": 1, 
    "typeMarche": "Travaux", 
    "libelle": "CHAMBOST ALLIERES - Les Cités - Construction de 16 logements individuels et intermédiaires", 
    "dateRemiseOffre": "20/07/2016 00:00", 
    "dateRemiseCandidature": "", 
    "datePublication": "23/06/2016 17:48", 
    "dateLimite": "20/07/2016 16:00", 
    "idFichierRC": 0, 
    "rectificatifs": true, 
    "questions": true, 
    "mps": false 
}, { 
    "idDossier": 422402, 
    "typeDocDCE": 6, 
    "dcevisible": 0, 
    "organisme": "OPAC du Rhône", 
    "idOrganisme": 5687, 
    "reference": "16S0010", 
    "idTypeProcedure": 2, 
    "typeProcedure": "Appel d'offres restreint", 
    "idTypeMarche": 2, 
    "typeMarche": "Services", 
    "libelle": "Maintenance des installations de chauffage et ECS avec intéressement et prestations de réparation sur le patrimoine de l’Opac du Rhône - Lot n°3 : chaufferies et installations de chauffage collectif et électriques des agences de Thizy et L’Arbresle", 
    "dateRemiseOffre": "", 
    "dateRemiseCandidature": "25/07/2016 00:00", 
    "datePublication": "27/06/2016 11:43", 
    "dateLimite": "25/07/2016 16:00", 
    "idFichierRC": 0, 
    "rectificatifs": false, 
    "questions": false, 
    "mps": false 
}] 

}

這裏是我的C#代碼

  string JsonString = new WebClient().DownloadString(URL); 
     JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings 
     { 
      DateFormatHandling = DateFormatHandling.MicrosoftDateFormat, 
      DateTimeZoneHandling = DateTimeZoneHandling.Local 
     }; 
     dynamic elements = JsonConvert.DeserializeObject(JsonString, microsoftDateFormatSettings); 
     for (int i = 0; i < int.Parse(elements.totalCount.ToString()) ; i++) 
     { 
      idDossier = elements.avis[i].idDossier; 
      refs = elements.avis[i]. 
      PublicationDate = elements.avis[i].datePublication; 
      Deadline = elements.avis[i].dateLimite; 

我做了什麼錯?

在此先感謝

回答

1

可以在JsonSerializerSettings

var json = @"{""dateRemiseCandidature"": ""25/07/2016 00:00""}"; 
var settings = new JsonSerializerSettings 
{ 
    DateFormatString = "dd/MM/yyyy hh:mm" 
}; 
var result = JsonConvert.DeserializeObject<SomeClass>(json, settings); 

////// 

class SomeClass 
{ 
    public DateTime dateRemiseCandidature { get; set; } 
} 
+0

非常感謝指定DateFormatString,我給它一個嘗試。 –