【问题标题】:Json.net incorrect datetime formatJson.net 日期时间格式不正确
【发布时间】:2016-07-19 15:50:33
【问题描述】:

我开始使用 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;

我做错了什么?

提前致谢

【问题讨论】:

    标签: c# json datetime json.net


    【解决方案1】:

    您可以在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; }
    }
    

    【讨论】:

    • 非常感谢,我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多