Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# json反序列化中的datetime字段_C#_Json_Ssis_Deserialization_Json Deserialization - Fatal编程技术网

C# json反序列化中的datetime字段

C# json反序列化中的datetime字段,c#,json,ssis,deserialization,json-deserialization,C#,Json,Ssis,Deserialization,Json Deserialization,我有一个.json,如下所示: [ { "number":"00000001", "dt_doc":"2019-09-26T17:39.000Z", "address":"complete address" } ] 但我对dt_doc字段有问题,这是我的反序列化代码。。。 我主要有以下几点: public override void CreateNewOutputRows() { String jsonFi

我有一个.json,如下所示:

[
    {
        "number":"00000001",
        "dt_doc":"2019-09-26T17:39.000Z",
        "address":"complete address"
    }
]
但我对dt_doc字段有问题,这是我的反序列化代码。。。 我主要有以下几点:

public override void CreateNewOutputRows()
    {
        String jsonFileContent = File.ReadAllText(Variables.JsonFilePath);
        JavaScriptSerializer js = new JavaScriptSerializer();
        List<Testata> testata = js.Deserialize<List<Testata>>(jsonFileContent);
        foreach(Testata test in testata)
        {
            Output0Buffer.AddRow();
            Output0Buffer.number= test.number;
            Output0Buffer.dtdoc = test.dt_doc;
            Output0Buffer.address= test.address;
        }
    }
但我在这个领域有一个例外,可能与8601标准有关,有什么办法可以解决吗

这是一个例外:

错误:System.FormatException:2019-09-26T17:39.000Z它不是DateTime的有效值。-->System.FormatException:字符串未识别为有效的日期时间值


错误是因为日期中缺少秒

"dt_doc":"2019-09-26T17:39.000Z"
应该是

"dt_doc":"2019-09-26T17:39.00.000Z"
如果这是有意的,那么可以指定格式。我已经用Newtonsoft.Json试过了


您可以在课堂上以字符串形式阅读它,然后:

DateTime.ParseExact(test.dt_doc,"yyyy-MM-ddTHH:mm.fffZ");

不建议使用类,而是切换到Json.NET。要使用JavaScriptSerializer实现它,您应该创建自定义JavaScriptConverter,如本文所示,但OP正在使用JavaScriptSerializer@PavelAnikhouski谢谢你。。我已经更新了提到我使用的库的帖子。我仍然得到了我在第一篇帖子中添加的异常,我尝试了这种方式,我没有得到异常,但我看不到数据字段,只有其他字段,但没有这个字段
public class Testata
{
    [JsonConverter(typeof(DateFormatConverter), "yyyy-MM-ddTHH:mm.fffZ")]
    public DateTime dt_doc { get; set; }
}

public class DateFormatConverter : IsoDateTimeConverter
{
    public DateFormatConverter(string format)
    {
        DateTimeFormat = format;
    }
}

List<Testata> testata = JsonConvert.DeserializeObject<List<Testata>>(jsonString);
DateTime.ParseExact(test.dt_doc,"yyyy-MM-ddTHH:mm.fffZ");