我开始使用Json.net解析带有日期值的Json字符串。约会时一切顺利。到目前为止,即使使用DateTime.Parse方法,我也无法将JValue转换为.NET DateTime,因为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;
我做错了什么?
提前感谢
您可以在JsonSerializerSettings
中指定DateFormatString
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; }
}